matrx-orm 3.1.43__tar.gz → 3.1.45__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.43 → matrx_orm-3.1.45}/.gitignore +1 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/BASE_CLASS_METHODS.md +3 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/PKG-INFO +1 -1
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/queue_claim.py +12 -2
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/query/builder.py +7 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/pyproject.toml +1 -1
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_queue_claim.py +28 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/AGENTS.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/CLAUDE.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/MODEL_API.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/database/orm/extended/managers/ai_model_base.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/docs/migrations.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/adapters/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/adapters/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/adapters/async_postgresql.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/adapters/base_adapter.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/adapters/postgresql.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/adapters/supabase_adapter.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/admin/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/admin/router.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/api/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/api/auth.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/api/config.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/api/handlers.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/api/protocol.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/api/server.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/associations.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/cache_debug.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/catalog.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/client/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/client/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/client/postgres_connection.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/client/postgrest.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/client/supabase_auth.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/client/supabase_config.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/client/supabase_manager.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/EXTENDED-TASK.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/FEATURE.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/TASKS.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/async_db_manager.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/base.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/config.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/connections.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/db_function.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/diagnostics.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/expressions.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/extended.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/fields.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/introspection.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/listen.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/loop_filters.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/model_dto.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/model_view.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/paginator.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/pool_maintenance.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/pydantic_bridge.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/registry.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/relations.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/resilience.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/rls_session.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/signals.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/tls.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/transaction.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/types.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/core/write_queue.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/entity.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/error_handling.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/exceptions.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/extended/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/extended/app_error_handler.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/identity_rule.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/middleware/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/middleware/base.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/migrations/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/migrations/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/migrations/cli.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/migrations/ddl.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/migrations/diff.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/migrations/executor.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/migrations/integration.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/migrations/loader.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/migrations/operations.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/migrations/state.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/migrations/table_filter.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/bulk_update_values.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/conflict.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/conflict_writes.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/create.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/db_functions.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/delete.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/dynamic_admin.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/dynamic_crud.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/graph_walk.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/latest_rows.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/read.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/relational_backfill.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/staging_load.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/operations/update.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/py.typed +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/python_sql/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/python_sql/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/python_sql/db_objects.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/query/FEATURE.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/query/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/query/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/query/executor.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/code_handler.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/codegen_writer.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/columns.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/common.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/diff_preview.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/generator.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/package_wiring.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/relationships.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/runner.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/schema.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/schema_manager.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/tables.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/schema_builder/views.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/secrets_battery/FEATURE.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/secrets_battery/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/secrets_battery/crypto.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/secrets_battery/items.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/secrets_battery/model.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/secrets_battery/org_service.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/secrets_battery/service.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/coalesce.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/dag.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/errors.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/fallback.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/flush.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/lifecycle.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/managed.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/op.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/reads.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/session.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/session/telemetry.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/sql_executor/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/sql_executor/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/sql_executor/executor.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/sql_executor/queries.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/sql_executor/registry.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/sql_executor/types.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/sql_executor/utils.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/state.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/utils/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/utils/sql_utils.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/matrx_orm/utils/type_converters.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/scripts/git-branches.sh +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/scripts/publish.sh +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/scripts/release.sh +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/conftest.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_admin_db_columns.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_admin_search_negation.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_admin_search_sentinels.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_advisory_lock.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_agent_message.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_api_auth.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_api_config.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_api_handlers.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_api_protocol.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_array_agg_order_by.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_associations.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_bulk_update_by_pk.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_cache_debug.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_call_function.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_case_when.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_catalog.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_composite_pk_filter.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_composite_pk_write_paths.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_config.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_conflict_target.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_conflict_writes.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_connection_codecs.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_connection_poison_guard.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_connection_primitives.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_count_composite_distinct.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_db_function_field.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_ddl_generator.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_derived_table.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_dirty_tracking.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_dynamic_crud.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_exceptions.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_execute_query_integrity_mapping.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_expression_primitives.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_fields.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_from_alias.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_fts.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_func_expression_args.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_graph_walk.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_having_annotate_alias.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_introspect_rls_policies.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_join_and_aggregate.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_latest_rows.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_listen_notify.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_managed_write_guard.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_matrx_entity.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_migration_diff_types.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_migration_loader.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_model_instance.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_model_meta.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_order_by_expression.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_patch_jsonb_path.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_pool_loop_recreation.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_pool_maintenance.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_postgrest_filters.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_pydantic_bridge.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_query_builder.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_query_error_detail.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_query_executor_sql.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_query_timeout.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_registry.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_registry_multi_database.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_registry_multi_schema.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_relational_backfill.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_relations.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_resilience.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_schema_exists.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_session_advisory_lock.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_state_cache.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_subquery_filter_raw.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_subquery_in_filter.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_supabase_auth.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_supabase_config.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_tls.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_typed_join_projection.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_typed_predicates.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_update_case_expression.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_update_subquery.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_upsert_default_leak.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_upsert_with_conflict.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_values_jsonb_decode.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_watched_lifecycle.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level1/test_write_retry_semantics.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level2/MODULE_README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level2/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level2/conftest.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level2/test_bulk_ops.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level2/test_cache_integration.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level2/test_crud.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level2/test_foreign_keys.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level2/test_m2m.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level2/test_manager.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level2/test_migrations_live.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level2/test_query_execution.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/level2/test_schema_diff.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project/.env.example +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project/README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project/generate.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project/generated/.gitkeep +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project/matrx_orm.yaml +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project/test_schema_generation.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project_desktop/.env.example +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project_desktop/README.md +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project_desktop/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project_desktop/client_example.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project_desktop/client_example.ts +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project_desktop/client_supabase_example.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/sample_project_desktop/server.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/schema/entity_tests.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/schema/test_base_generation.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/schema/test_composite_pk_fk_generation.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/schema/test_composite_unique_generation.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/schema/test_dto_identity_generation.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/schema/test_entity_capability_generation.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/schema/test_generate_schema.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/schema/test_junction_analysis.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/schema/test_multi_schema_output.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/schema/test_sql_expression_defaults.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/schema/test_view_generation.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/schema_builder/test_focused_generation_plan.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/__init__.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/conftest.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/test_cache_no_downgrade.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/test_capture_poison_proof.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/test_coalesce.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/test_dag.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/test_disk_spill_fallback.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/test_flush_individual_fallback.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/test_governed_write.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/test_managed.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/test_op_enqueue_site.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/test_reads.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/session/test_session.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/test_database_name_alias.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/test_db_functions.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/test_model_cls_refactor.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/test_no_blocking_asyncpg_tls.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/test_secrets_battery.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/test_sql_param_casts.py +0 -0
- {matrx_orm-3.1.43 → matrx_orm-3.1.45}/tests/test_sync_twins_guard.py +0 -0
|
@@ -67,6 +67,9 @@ The following methods are available directly from all manager classes:
|
|
|
67
67
|
`Model.claim_batch(set_fields=..., filters=..., order_by=..., limit=...,
|
|
68
68
|
returning=...)` atomically selects and updates a bounded queue batch with
|
|
69
69
|
`FOR UPDATE SKIP LOCKED`, so concurrent workers neither block nor double-claim.
|
|
70
|
+
Successful claims invalidate that model's identity cache before returning, so a
|
|
71
|
+
worker's immediate read observes the claimed state instead of a cached
|
|
72
|
+
pre-claim row.
|
|
70
73
|
`filters` accepts either an equality dict or a compound `Q` tree with
|
|
71
74
|
`eq`/`ne`/`gt`/`gte`/`lt`/`lte`/`in`/`isnull` lookups. Database expressions
|
|
72
75
|
such as `Now()` are valid in both filters and `set_fields`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: matrx-orm
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.45
|
|
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
|
|
@@ -235,13 +235,23 @@ async def claim_batch(
|
|
|
235
235
|
|
|
236
236
|
if connection is not None:
|
|
237
237
|
rows = await connection.fetch(sql, *params)
|
|
238
|
-
|
|
238
|
+
claimed = [dict(r) for r in rows]
|
|
239
|
+
if claimed:
|
|
240
|
+
from matrx_orm.state import StateManager
|
|
241
|
+
|
|
242
|
+
StateManager.clear_model(model_cls)
|
|
243
|
+
return claimed
|
|
239
244
|
|
|
240
245
|
from matrx_orm.core.async_db_manager import AsyncDatabaseManager
|
|
241
246
|
|
|
242
247
|
config = model_cls.get_database_name()
|
|
243
248
|
rows = await AsyncDatabaseManager.execute_write(config, sql, *params)
|
|
244
|
-
|
|
249
|
+
claimed = [dict(r) for r in rows]
|
|
250
|
+
if claimed:
|
|
251
|
+
from matrx_orm.state import StateManager
|
|
252
|
+
|
|
253
|
+
StateManager.clear_model(model_cls)
|
|
254
|
+
return claimed
|
|
245
255
|
|
|
246
256
|
|
|
247
257
|
__all__ = ["claim_batch"]
|
|
@@ -312,6 +312,13 @@ class QueryBuilder(Generic[ModelT]):
|
|
|
312
312
|
bad_fields: list[str] = []
|
|
313
313
|
bad_ops: list[tuple[str, str, str]] = [] # (full_key, field, suspect_op)
|
|
314
314
|
for key in kwargs:
|
|
315
|
+
if "." in key:
|
|
316
|
+
# Qualified joined-table reference ("rag.kg_chunks.source_kind"
|
|
317
|
+
# or alias "c.source_kind") — a supported filter form the
|
|
318
|
+
# executor passes through untouched (_map_field_name). It is
|
|
319
|
+
# not a field of this model, so the typo check cannot apply;
|
|
320
|
+
# Postgres validates the real column.
|
|
321
|
+
continue
|
|
315
322
|
if "__" in key:
|
|
316
323
|
if key.count("__") != 1:
|
|
317
324
|
bad_fields.append(key)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "matrx-orm"
|
|
3
|
-
version = "3.1.
|
|
3
|
+
version = "3.1.45"
|
|
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" }
|
|
@@ -20,6 +20,7 @@ import pytest
|
|
|
20
20
|
from matrx_orm import ColumnComparison, Compare, Exists, F, Now, OuterRef, Q
|
|
21
21
|
from matrx_orm.operations.queue_claim import claim_batch
|
|
22
22
|
from matrx_orm.query.builder import QueryBuilder
|
|
23
|
+
from matrx_orm.state import StateManager
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
class _Meta:
|
|
@@ -83,6 +84,33 @@ async def test_claim_batch_plain_single_column_order_by() -> None:
|
|
|
83
84
|
assert params == ("pending", 5, "claimed")
|
|
84
85
|
|
|
85
86
|
|
|
87
|
+
@pytest.mark.asyncio
|
|
88
|
+
async def test_claim_batch_invalidates_identity_cache(
|
|
89
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
90
|
+
) -> None:
|
|
91
|
+
model = _make_model("workflow.job")
|
|
92
|
+
conn = _CaptureConn(rows=[{"id": "job-1"}])
|
|
93
|
+
cleared: list[type] = []
|
|
94
|
+
monkeypatch.setattr(
|
|
95
|
+
StateManager,
|
|
96
|
+
"clear_model",
|
|
97
|
+
classmethod(lambda cls, model_class: cleared.append(model_class) or 1),
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
rows = await claim_batch(
|
|
101
|
+
model,
|
|
102
|
+
set_fields={"status": "processing"},
|
|
103
|
+
filters={"status": "pending"},
|
|
104
|
+
order_by="created_at",
|
|
105
|
+
limit=1,
|
|
106
|
+
returning=["id"],
|
|
107
|
+
connection=conn,
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
assert rows == [{"id": "job-1"}]
|
|
111
|
+
assert cleared == [model]
|
|
112
|
+
|
|
113
|
+
|
|
86
114
|
@pytest.mark.asyncio
|
|
87
115
|
async def test_claim_batch_none_filter_renders_is_null_not_bound_equality() -> None:
|
|
88
116
|
"""The WHERE-NULL trap: `col = $N` with a NULL param matches NOTHING in
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|