ferro-orm 0.18.0__tar.gz → 0.19.0__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.
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/AGENTS.md +40 -2
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/CHANGELOG.md +14 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/CONTEXT.md +13 -1
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/Cargo.lock +87 -86
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/Cargo.toml +1 -1
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/PKG-INFO +1 -1
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/crates/ferro-ddl-lowering/src/lib.rs +1007 -1
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/crates/ferro-migrate/src/emit.rs +99 -3
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/crates/ferro-migrate/src/lib.rs +142 -1
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/crates/ferro-migrate/src/tests.rs +477 -1
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/crates/ferro-schema-ir/src/lib.rs +143 -0
- ferro_orm-0.19.0/docs/adr/0012-table-checks-are-lambdas.md +12 -0
- ferro_orm-0.19.0/docs/adr/0013-table-check-reconciliation.md +12 -0
- ferro_orm-0.19.0/docs/adr/0014-table-checks-sqlite-create-only.md +11 -0
- ferro_orm-0.19.0/docs/adr/0015-table-check-body-drift.md +11 -0
- ferro_orm-0.19.0/docs/adr/0016-check-predicates-literals-only.md +11 -0
- ferro_orm-0.19.0/docs/examples/table_checks.py +45 -0
- ferro_orm-0.19.0/docs/examples/table_checks_annotated.py +42 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/api/exceptions.md +18 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/guide/migrations.md +7 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/guide/models-and-fields.md +32 -0
- ferro_orm-0.19.0/docs/solutions/issues/pg18-restrict-sqlstate-23001.md +33 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/pyproject.toml +1 -1
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/errors.rs +87 -7
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/__init__.py +2 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/_core.pyi +60 -1
- ferro_orm-0.19.0/src/ferro/checks.py +609 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/exceptions.py +6 -1
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/ir/compiler.py +55 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/migrations/alembic.py +254 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/models.py +12 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/introspect.rs +338 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/lib.rs +7 -1
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/migrate.rs +93 -9
- ferro_orm-0.19.0/src/naming_ffi.rs +241 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/schema.rs +11 -3
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/state.rs +1 -0
- ferro_orm-0.19.0/tests/test_check_predicate_dialect.py +348 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_exception_mapping.py +65 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_generation_counter_dirty_tracking.py +2 -10
- ferro_orm-0.19.0/tests/test_live_table_checks.py +74 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_naming_single_source.py +19 -0
- ferro_orm-0.19.0/tests/test_table_check_orphans.py +546 -0
- ferro_orm-0.19.0/tests/test_table_check_rebuild.py +532 -0
- ferro_orm-0.19.0/tests/test_table_check_reconcile.py +514 -0
- ferro_orm-0.19.0/tests/test_table_checks.py +599 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/uv.lock +1 -1
- ferro_orm-0.18.0/src/naming_ffi.rs +0 -115
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.github/PERMISSIONS.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.github/PYPI_CHECKLIST.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.github/PYPI_SETUP.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.github/generated/wheels.generated.yml +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.github/pull_request_template.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.github/workflows/ci.yml +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.github/workflows/packaging-smoke.yml +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.github/workflows/publish-docs.yml +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.github/workflows/publish.yml +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.github/workflows/release.yml +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.gitignore +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.pre-commit-config.yaml +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/.python-version +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/CONTRIBUTING.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/LICENSE +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/README.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/benchmarks/README.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/benchmarks/__init__.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/benchmarks/__main__.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/benchmarks/backends.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/benchmarks/baselines/postgres.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/benchmarks/baselines/sqlite.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/benchmarks/compare.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/benchmarks/harness.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/benchmarks/model.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/benchmarks/run.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/crates/ferro-ddl-lowering/Cargo.toml +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/crates/ferro-migrate/Cargo.toml +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/crates/ferro-migrate/src/order.rs +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/crates/ferro-schema-ir/Cargo.toml +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0001-resolved-epoch-registration.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0002-unified-column-fact-derivation.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0003-path-blind-db-type-validation.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0004-jsonb-postgres-only-canonical.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0005-jsonb-default-on-postgres.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0006-relation-traversal-inner-joins.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0007-materialization-plan-complete-instances.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0007-reverse-relations-tested-not-traversed.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0008-populated-relations-include.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0008-predicate-negation-uniform-not.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0009-aggregate-projections-derived-grouping.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0010-create-pass-owns-only-missing-tables.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/adr/0011-label-addition-update-gated-append-only.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/agents/domain.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/agents/issue-tracker.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/agents/triage-labels.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/architecture-review-2026-07-08.html +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-04-29-named-connections-role-routing-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-05-08-typed-query-predicates-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-05-13-configurable-column-storage-types-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-05-14-autogenerate-support-for-db-type-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-05-25-annotated-strenum-cold-hydration-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-06-24-ir-p8-119-wire-automigrate-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-06-25-ir-p8-120-parity-gate-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-06-26-ir-p8.5-140-shared-lowering-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-06-26-ir-p8.5-143-db-type-drop-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-06-26-ir-p8.5-144-reconcile-indexes-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-06-28-ir-p8.5-141-single-schema-ir-producer-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-06-29-ir-p8.6-146-dialect-enum-unification-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-06-29-ir-p8.6-153-create-path-ir-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-06-30-ir-p8.6-155-deferred-annotations-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-06-30-ir-p8.6-158-check-renderer-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-07-01-ir-p8.6-154-datetime-tz-coarseness-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-07-01-ir-p8.6-162-typed-save-bind-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-07-01-ir-p8.6-165-blob-introspection-false-positive-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-07-02-ff-c1-codec-plan-design.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/brainstorms/2026-07-06-upgrade-guide-consolidation-requirements.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/aggregations.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/aggregations_annotated.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/existence_tests.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/existence_tests_annotated.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/multiple_databases.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/mutations.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/pagination.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/partial_selects.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/partial_selects_annotated.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/populated_relations.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/populated_relations_annotated.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/predicates.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/predicates_annotated.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/quickstart.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/quickstart_annotated.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/raw_sql.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/relationships.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/relationships_annotated.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/soft_deletes.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/soft_deletes_annotated.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/testing_conftest.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/timestamps.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/timestamps_annotated.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/transactions.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/traversal.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/examples/traversal_annotated.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/api/connection.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/api/fields.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/api/migrations.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/api/model.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/api/queries.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/api/raw-sql.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/api/relationships.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/api/transactions.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/changelog.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/concepts/architecture.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/concepts/backends.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/concepts/identity-map.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/concepts/performance.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/concepts/query-typing.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/concepts/type-safety.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/contributing.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/faq.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/getting-started/installation.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/getting-started/next-steps.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/getting-started/quickstart.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/guide/aggregations.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/guide/connections.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/guide/mutations.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/guide/queries.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/guide/raw-sql.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/guide/relationships.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/guide/transactions.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/howto/migrate-from-sqlalchemy.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/howto/multiple-databases.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/howto/pagination.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/howto/soft-deletes.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/howto/testing.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/howto/timestamps.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/howto/upgrade-guide.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/index.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/roadmap.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/stylesheets/extra.css +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/pages/why-ferro.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-04-24-001-refactor-multi-db-backend-architecture-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-04-29-001-typed-null-binds-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-04-29-002-feat-named-connections-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-05-07-001-refactor-generic-model-connection-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-05-08-001-feat-typed-query-predicates-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-05-13-001-feat-configurable-column-storage-types-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-05-25-001-fix-annotated-strenum-cold-hydration-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-06-19-001-ir-first-roadmap.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-06-24-001-feat-ir-p8-119-wire-automigrate-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-06-25-001-feat-ir-p8-120-parity-gate-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-06-26-001-feat-ir-p8.5-140-shared-lowering-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-06-26-002-feat-ir-p8.5-143-db-type-drop-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-06-26-003-feat-ir-p8.5-144-reconcile-indexes-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-06-28-001-feat-ir-p8.5-141-single-schema-ir-producer-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-06-29-001-refactor-ir-p8.6-153-create-path-unification-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-06-29-002-refactor-ir-p8.6-146-dialect-enum-unification-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-06-30-001-refactor-ir-p8.6-158-check-renderer-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-06-30-002-fix-ir-p8.6-155-deferred-annotations-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-01-001-feat-ir-p8.6-162-typed-save-bind-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-01-002-fix-ir-p8.6-154-datetime-tz-coarseness-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-01-003-fix-ir-p8.6-165-blob-introspection-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-02-001-fable-fixes-roadmap.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-02-002-feat-ff-a-172-typed-exceptions-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-02-003-ff-c-native-decode-design.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-02-004-ff-c-c2-catalog-cache-design.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-02-005-ff-d-identity-routing-design.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-02-006-ff-d-identity-routing-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-03-007-ff-e-registry-identity-design.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-03-008-ff-e-registry-identity-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-06-009-ff-f-query-builder-1.0-design.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-06-010-ff-f-query-builder-1.0-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-06-011-ff-g-hardening-design.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-06-012-ff-g-hardening-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-06-013-ff-g2-operations-dedup-design.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-06-014-ff-g2-operations-dedup-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-06-015-docs-upgrade-guide-consolidation-plan.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/2026-07-18-016-existence-tests-design.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/ir-first-migration-guide.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/plans/ir-first-release-checklist.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/rfc/ir-contracts-v1.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/README.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/architecture-patterns/ir-first-lowering-consolidation-audit.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/architecture-patterns/ir-first-merge-readiness-review.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/issues/pydantic-slots-missing-after-ferro-hydration.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/issues/python-3.14-deferred-annotation-typeerror-swallow.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/issues/sa-pk-column-nullable-divergence.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/issues/sa-vs-rust-unique-constraint-shape.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/issues/self-fk-evicts-component-from-create-order.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/issues/sqlite-integer-decimal-hydrates-as-none.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/issues/sqlite-null-hydrates-as-int-zero.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/issues/typed-where-null-panics-is-null.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/patterns/configurable-column-storage-types.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/patterns/cross-emitter-ddl-parity.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/patterns/ddl-on-live-engine.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/patterns/derived-type-and-naming-decision-table.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/patterns/foreign-key-index.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/patterns/index-unique-redundancy.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/patterns/ir-invariants.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/patterns/persistence-state.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/patterns/shadow-fk-columns.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/patterns/sqlite-alembic-reconnect-hydration-tests.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/docs/solutions/patterns/typed-null-binds.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/justfile +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/scripts/demo_queries.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/scripts/demo_queries_pre_v012.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/backend.rs +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/codec.rs +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/codec_plan.rs +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/connection.rs +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/_annotation_utils.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/_bind_payload.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/_deprecations.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/_shadow_fk_types.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/base.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/columns.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/composite_indexes.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/composite_uniques.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/fields.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/ir/__init__.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/metaclass.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/migrations/__init__.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/py.typed +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/query/__init__.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/query/builder.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/query/nodes.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/query/rows.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/query/wire.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/raw.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/registry.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/relations/__init__.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/relations/descriptors.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/session.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/ferro/state.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/hydration.rs +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/operations.rs +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/query.rs +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/src/schema_bind.rs +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/__init__.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/conftest.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/db_backends.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/README.md +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/codec_registry_core_v1.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_account_exists_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_account_scoped_exists_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_owner_nested_exists_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_owner_not_exists_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_transaction_aggregate_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_transaction_global_aggregate_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_transaction_include_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_transaction_left_join_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_transaction_record_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_transaction_traversal_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_transaction_traversed_record_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_user_compound_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_user_m2m_exists_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_user_not_compound_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/query_user_not_leaf_v7.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/schema_invoice_baseline_v1.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/schema_phase1_fixture_models_v1.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/fixtures/ir_vectors/schema_raw_str_pk_autoincrement_v1.json +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/static_fixtures/bad_includes.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/static_fixtures/bad_predicates.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/static_fixtures/bad_projections.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/static_fixtures/good_includes.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/static_fixtures/good_predicates.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/static_fixtures/good_projections.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_aggregation.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_alembic_autogenerate.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_alembic_bridge.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_alembic_db_type.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_alembic_nullability.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_alembic_type_mapping.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_annotation_utils.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_auto_migrate.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_bulk_create_chunking.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_bulk_install.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_bulk_update.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_catalog_cache.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_codec_plan.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_column_specs.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_compiled_query.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_composite_index.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_composite_unique.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_connection.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_connection_redaction.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_constraints.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_cross_emitter_parity.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_crud.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_db_backends.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_db_type_cross_emitter_parity.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_db_type_integration.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_db_type_typing.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_db_type_validation.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_deletion.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_deprecations.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_docs_examples.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_documentation_features.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_enum_cold_hydration.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_exceptions.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_field_wrapper.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_fk_target_pk.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_global_aggregates.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_grouped_aggregates.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_helpers.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_hydration.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_hydration_equivalence.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_identity_memory.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_identity_refresh.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_identity_scoped_invalidation.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_identity_weakref.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_import_budget.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_include.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_ir_vectors_contract.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_label_addition.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_metaclass_internals.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_metadata.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_migrate_plan.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_model_identity.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_models.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_mutation_pagination_guard.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_named_connections_integration.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_negation.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_one_to_one.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_operation_seam_sync.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_partial_selects.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_primary_key_facts.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_provisional_import.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_query_builder.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_query_column_validation.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_query_exists.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_query_immutability.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_query_joins.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_query_typing.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_query_wire_vectors.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_raw_sql.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_refresh.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_registry_entrypoints.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_registry_owner.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_relation_specs.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_relationship_engine.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_relationship_resolution_errors.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_route_single_site.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_routing_errors.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_save_pk_edges.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_save_semantics.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_schema.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_schema_constraints.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_schema_db_type_metadata.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_schema_enum_annotations.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_session.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_shadow_fk_types.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_sqlite_alembic_reconnect_hydration.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_static_contracts.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_string_search.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_structural_types.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_temporal_types.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_transactions.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_traversed_projection.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_typed_null_binds.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/tests/test_typed_save_bind.py +0 -0
- {ferro_orm-0.18.0 → ferro_orm-0.19.0}/zensical.toml +0 -0
|
@@ -46,8 +46,11 @@ For a single model, every emitter must agree on:
|
|
|
46
46
|
`docs/solutions/patterns/derived-type-and-naming-decision-table.md`.
|
|
47
47
|
7. **Primary key constraint names** — when explicitly named.
|
|
48
48
|
8. **Check constraint names** — `ck_<table>_<col>` for the single-column
|
|
49
|
-
`db_check=True` constraint;
|
|
50
|
-
|
|
49
|
+
`db_check=True` constraint; `ck_<table>_<suffix>` for table checks declared
|
|
50
|
+
in `__ferro_checks__`. Column checks use `_ddl_check_constraint_name`
|
|
51
|
+
(Python) and `db_check_constraint_name` (Rust); table checks use
|
|
52
|
+
`_ddl_table_check_constraint_name` (Python) and
|
|
53
|
+
`table_check_constraint_name` (Rust).
|
|
51
54
|
9. **Default values** — server-side defaults must serialize identically.
|
|
52
55
|
10. **Nullability** — must agree.
|
|
53
56
|
11. **Enum label additions** — the label-addition decision (which model-declared
|
|
@@ -60,6 +63,41 @@ For a single model, every emitter must agree on:
|
|
|
60
63
|
executes the byte-identical statements. Pinned by
|
|
61
64
|
`tests/test_cross_emitter_parity.py` and the ferro-ddl-lowering unit pins.
|
|
62
65
|
See ADR-0011 (append-only; update-gated; warn-never-act for extras).
|
|
66
|
+
12. **Check additions** — the missing-check decision (which declared `ck_*`
|
|
67
|
+
names — table checks, then column checks — a live table does not carry)
|
|
68
|
+
and the rendered ADD are decided by ONE pair of functions:
|
|
69
|
+
`ferro_ddl_lowering::missing_check_names` / `render_check_addition`.
|
|
70
|
+
The auto-migrate reconciliation pass consumes them through
|
|
71
|
+
`ferro_migrate::plan_missing_checks`; the Alembic autogenerate
|
|
72
|
+
comparator consumes them over FFI (`_core._plan_check_addition`) and
|
|
73
|
+
executes the byte-identical statements. Pinned by
|
|
74
|
+
`tests/test_table_check_reconcile.py`. See ADR-0013 (add on
|
|
75
|
+
`migrate_updates`; name-only comparison) and ADR-0014 (SQLite warn-skip).
|
|
76
|
+
13. **Check rebuilds** — the same-name body-drift decision (which declared
|
|
77
|
+
`ck_*` names exist live **and** whose catalog definition normalizes
|
|
78
|
+
unequal to the canonical rendering) and the rendered DROP + bare ADD
|
|
79
|
+
are decided by ONE pair of functions:
|
|
80
|
+
`ferro_ddl_lowering::drifted_check_names` / `render_check_rebuild`
|
|
81
|
+
(one normalizer: `normalize_check_definition`). The auto-migrate
|
|
82
|
+
reconciliation pass consumes them through
|
|
83
|
+
`ferro_migrate::plan_check_rebuilds`; the Alembic autogenerate
|
|
84
|
+
comparator consumes them over FFI (`_core._plan_check_rebuild`) and
|
|
85
|
+
executes the byte-identical statements. Pinned by
|
|
86
|
+
`tests/test_table_check_rebuild.py`. See ADR-0015 (canonical render vs
|
|
87
|
+
catalog, both through one normalizer) and ADR-0014 (SQLite warn-skip).
|
|
88
|
+
14. **Check leftovers / drops** — the leftover-name decision (which live
|
|
89
|
+
ferro-owned `ck_*` names a table carries that the model no longer
|
|
90
|
+
declares) and the rendered DROP are decided by ONE trio of functions:
|
|
91
|
+
`ferro_ddl_lowering::extra_check_names` /
|
|
92
|
+
`extra_check_names_warning` / `render_check_drop`. The auto-migrate
|
|
93
|
+
reconciliation pass consumes them through
|
|
94
|
+
`ferro_migrate::plan_check_drops` (ops only under
|
|
95
|
+
`migrate_destructive`; the warning always fires on `migrate_updates`).
|
|
96
|
+
The Alembic autogenerate comparator consumes them over FFI
|
|
97
|
+
(`_core._plan_check_drop`) with **no** destructive gate and executes
|
|
98
|
+
the byte-identical statements. Pinned by
|
|
99
|
+
`tests/test_table_check_orphans.py`. See ADR-0013 (leftover warning +
|
|
100
|
+
destructive ladder) and ADR-0014 (SQLite warn-skip).
|
|
63
101
|
|
|
64
102
|
### Why this invariant exists
|
|
65
103
|
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## v0.19.0 (2026-08-18)
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
- Classify PG18 RESTRICT (23001) as ForeignKeyViolationError
|
|
9
|
+
([#338](https://github.com/syn54x/ferro-orm/pull/338),
|
|
10
|
+
[`4fa1153`](https://github.com/syn54x/ferro-orm/commit/4fa1153477802de8207c7987748db962b35c2f0f))
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- Named table-level CHECK constraints ([#356](https://github.com/syn54x/ferro-orm/pull/356),
|
|
15
|
+
[`ba179e7`](https://github.com/syn54x/ferro-orm/commit/ba179e71e9bce4ab77a6fdbc1831661485de6799))
|
|
16
|
+
|
|
17
|
+
|
|
4
18
|
## v0.18.0 (2026-08-05)
|
|
5
19
|
|
|
6
20
|
### Documentation
|
|
@@ -145,5 +145,17 @@ The reconciliation-pass operation appending model-declared labels missing from a
|
|
|
145
145
|
_Avoid_: Enum sync, label reconciliation, enum evolution
|
|
146
146
|
|
|
147
147
|
**Constraint rebuild**:
|
|
148
|
-
Drop-and-recreate of a ferro-owned constraint whose live definition no longer matches the declared model — a foreign key's `on_delete`, its target, its columns. Metadata-only: rows are never touched. On a backend that cannot alter constraints, ferro warns loudly and skips; it never diverges silently.
|
|
148
|
+
Drop-and-recreate of a ferro-owned constraint whose live definition no longer matches the declared model — a foreign key's `on_delete`, its target, its columns, or a table check's predicate. Metadata-only: rows are never touched. On a backend that cannot alter constraints, ferro warns loudly and skips; it never diverges silently.
|
|
149
149
|
_Avoid_: Constraint alter, FK patch, in-place constraint update
|
|
150
|
+
|
|
151
|
+
**Column check**:
|
|
152
|
+
A single-column CHECK that restricts a closed-domain field to its declared labels (`Field(db_check=True)` → `col IN (...)`). Named `ck_<table>_<col>`; not a table check.
|
|
153
|
+
_Avoid_: enum check, db_check constraint, value check
|
|
154
|
+
|
|
155
|
+
**Table check**:
|
|
156
|
+
A named boolean invariant over one row of one table, declared on the model as a lambda and enforced by the database as a CHECK constraint. The live name is `ck_<table>_<suffix>`; the suffix is what the model declares.
|
|
157
|
+
_Avoid_: table-level check, multi-column check, composite check, row check
|
|
158
|
+
|
|
159
|
+
**Check predicate**:
|
|
160
|
+
The lambda body of a table check — a ferro predicate over that model's own columns (or a forward-FK null test on the relation or its shadow `*_id`), with literal values only. Relation traversal, existence tests, and aggregates are not check predicates.
|
|
161
|
+
_Avoid_: check SQL, constraint expression, check body
|
|
@@ -95,9 +95,9 @@ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
|
|
|
95
95
|
|
|
96
96
|
[[package]]
|
|
97
97
|
name = "cc"
|
|
98
|
-
version = "1.4.
|
|
98
|
+
version = "1.4.3"
|
|
99
99
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
100
|
-
checksum = "
|
|
100
|
+
checksum = "509591b7bcd67f4ef775afad7662703b4935daaa6ec0e5605cfb1090b32a2b6d"
|
|
101
101
|
dependencies = [
|
|
102
102
|
"find-msvc-tools",
|
|
103
103
|
"shlex",
|
|
@@ -317,7 +317,7 @@ dependencies = [
|
|
|
317
317
|
|
|
318
318
|
[[package]]
|
|
319
319
|
name = "ferro"
|
|
320
|
-
version = "0.
|
|
320
|
+
version = "0.19.0"
|
|
321
321
|
dependencies = [
|
|
322
322
|
"chrono",
|
|
323
323
|
"dashmap",
|
|
@@ -364,9 +364,9 @@ dependencies = [
|
|
|
364
364
|
|
|
365
365
|
[[package]]
|
|
366
366
|
name = "find-msvc-tools"
|
|
367
|
-
version = "0.1.
|
|
367
|
+
version = "0.1.11"
|
|
368
368
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
369
|
-
checksum = "
|
|
369
|
+
checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890"
|
|
370
370
|
|
|
371
371
|
[[package]]
|
|
372
372
|
name = "flume"
|
|
@@ -402,9 +402,9 @@ dependencies = [
|
|
|
402
402
|
|
|
403
403
|
[[package]]
|
|
404
404
|
name = "futures"
|
|
405
|
-
version = "0.3.
|
|
405
|
+
version = "0.3.34"
|
|
406
406
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
407
|
-
checksum = "
|
|
407
|
+
checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3"
|
|
408
408
|
dependencies = [
|
|
409
409
|
"futures-channel",
|
|
410
410
|
"futures-core",
|
|
@@ -417,9 +417,9 @@ dependencies = [
|
|
|
417
417
|
|
|
418
418
|
[[package]]
|
|
419
419
|
name = "futures-channel"
|
|
420
|
-
version = "0.3.
|
|
420
|
+
version = "0.3.34"
|
|
421
421
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
422
|
-
checksum = "
|
|
422
|
+
checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4"
|
|
423
423
|
dependencies = [
|
|
424
424
|
"futures-core",
|
|
425
425
|
"futures-sink",
|
|
@@ -427,15 +427,15 @@ dependencies = [
|
|
|
427
427
|
|
|
428
428
|
[[package]]
|
|
429
429
|
name = "futures-core"
|
|
430
|
-
version = "0.3.
|
|
430
|
+
version = "0.3.34"
|
|
431
431
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
432
|
-
checksum = "
|
|
432
|
+
checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e"
|
|
433
433
|
|
|
434
434
|
[[package]]
|
|
435
435
|
name = "futures-executor"
|
|
436
|
-
version = "0.3.
|
|
436
|
+
version = "0.3.34"
|
|
437
437
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
438
|
-
checksum = "
|
|
438
|
+
checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432"
|
|
439
439
|
dependencies = [
|
|
440
440
|
"futures-core",
|
|
441
441
|
"futures-task",
|
|
@@ -455,38 +455,38 @@ dependencies = [
|
|
|
455
455
|
|
|
456
456
|
[[package]]
|
|
457
457
|
name = "futures-io"
|
|
458
|
-
version = "0.3.
|
|
458
|
+
version = "0.3.34"
|
|
459
459
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
460
|
-
checksum = "
|
|
460
|
+
checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed"
|
|
461
461
|
|
|
462
462
|
[[package]]
|
|
463
463
|
name = "futures-macro"
|
|
464
|
-
version = "0.3.
|
|
464
|
+
version = "0.3.34"
|
|
465
465
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
466
|
-
checksum = "
|
|
466
|
+
checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44"
|
|
467
467
|
dependencies = [
|
|
468
468
|
"proc-macro2",
|
|
469
469
|
"quote",
|
|
470
|
-
"syn
|
|
470
|
+
"syn 3.0.3",
|
|
471
471
|
]
|
|
472
472
|
|
|
473
473
|
[[package]]
|
|
474
474
|
name = "futures-sink"
|
|
475
|
-
version = "0.3.
|
|
475
|
+
version = "0.3.34"
|
|
476
476
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
477
|
-
checksum = "
|
|
477
|
+
checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d"
|
|
478
478
|
|
|
479
479
|
[[package]]
|
|
480
480
|
name = "futures-task"
|
|
481
|
-
version = "0.3.
|
|
481
|
+
version = "0.3.34"
|
|
482
482
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
483
|
-
checksum = "
|
|
483
|
+
checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd"
|
|
484
484
|
|
|
485
485
|
[[package]]
|
|
486
486
|
name = "futures-util"
|
|
487
|
-
version = "0.3.
|
|
487
|
+
version = "0.3.34"
|
|
488
488
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
489
|
-
checksum = "
|
|
489
|
+
checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc"
|
|
490
490
|
dependencies = [
|
|
491
491
|
"futures-channel",
|
|
492
492
|
"futures-core",
|
|
@@ -634,9 +634,9 @@ dependencies = [
|
|
|
634
634
|
|
|
635
635
|
[[package]]
|
|
636
636
|
name = "icu_collections"
|
|
637
|
-
version = "2.
|
|
637
|
+
version = "2.3.0"
|
|
638
638
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
639
|
-
checksum = "
|
|
639
|
+
checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513"
|
|
640
640
|
dependencies = [
|
|
641
641
|
"displaydoc",
|
|
642
642
|
"potential_utf",
|
|
@@ -648,9 +648,9 @@ dependencies = [
|
|
|
648
648
|
|
|
649
649
|
[[package]]
|
|
650
650
|
name = "icu_locale_core"
|
|
651
|
-
version = "2.
|
|
651
|
+
version = "2.3.0"
|
|
652
652
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
653
|
-
checksum = "
|
|
653
|
+
checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb"
|
|
654
654
|
dependencies = [
|
|
655
655
|
"displaydoc",
|
|
656
656
|
"litemap",
|
|
@@ -661,9 +661,9 @@ dependencies = [
|
|
|
661
661
|
|
|
662
662
|
[[package]]
|
|
663
663
|
name = "icu_normalizer"
|
|
664
|
-
version = "2.
|
|
664
|
+
version = "2.3.0"
|
|
665
665
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
666
|
-
checksum = "
|
|
666
|
+
checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f"
|
|
667
667
|
dependencies = [
|
|
668
668
|
"icu_collections",
|
|
669
669
|
"icu_normalizer_data",
|
|
@@ -675,16 +675,17 @@ dependencies = [
|
|
|
675
675
|
|
|
676
676
|
[[package]]
|
|
677
677
|
name = "icu_normalizer_data"
|
|
678
|
-
version = "2.
|
|
678
|
+
version = "2.3.0"
|
|
679
679
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
680
|
-
checksum = "
|
|
680
|
+
checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0"
|
|
681
681
|
|
|
682
682
|
[[package]]
|
|
683
683
|
name = "icu_properties"
|
|
684
|
-
version = "2.
|
|
684
|
+
version = "2.3.0"
|
|
685
685
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
686
|
-
checksum = "
|
|
686
|
+
checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148"
|
|
687
687
|
dependencies = [
|
|
688
|
+
"displaydoc",
|
|
688
689
|
"icu_collections",
|
|
689
690
|
"icu_locale_core",
|
|
690
691
|
"icu_properties_data",
|
|
@@ -695,15 +696,15 @@ dependencies = [
|
|
|
695
696
|
|
|
696
697
|
[[package]]
|
|
697
698
|
name = "icu_properties_data"
|
|
698
|
-
version = "2.
|
|
699
|
+
version = "2.3.0"
|
|
699
700
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
700
|
-
checksum = "
|
|
701
|
+
checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa"
|
|
701
702
|
|
|
702
703
|
[[package]]
|
|
703
704
|
name = "icu_provider"
|
|
704
|
-
version = "2.
|
|
705
|
+
version = "2.3.0"
|
|
705
706
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
706
|
-
checksum = "
|
|
707
|
+
checksum = "92a7ed671a6aad807a8651a2e1782a6598fda9ce5185dd8158549e95a91c6428"
|
|
707
708
|
dependencies = [
|
|
708
709
|
"displaydoc",
|
|
709
710
|
"icu_locale_core",
|
|
@@ -779,9 +780,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
|
|
|
779
780
|
|
|
780
781
|
[[package]]
|
|
781
782
|
name = "js-sys"
|
|
782
|
-
version = "0.3.
|
|
783
|
+
version = "0.3.104"
|
|
783
784
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
784
|
-
checksum = "
|
|
785
|
+
checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a"
|
|
785
786
|
dependencies = [
|
|
786
787
|
"cfg-if",
|
|
787
788
|
"futures-util",
|
|
@@ -811,14 +812,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
|
|
811
812
|
|
|
812
813
|
[[package]]
|
|
813
814
|
name = "libredox"
|
|
814
|
-
version = "0.1.
|
|
815
|
+
version = "0.1.20"
|
|
815
816
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
816
|
-
checksum = "
|
|
817
|
+
checksum = "28d0a00925a9f930d679b6789b721e3a7f9ed110f41b86d2497caa780c3a070a"
|
|
817
818
|
dependencies = [
|
|
818
819
|
"bitflags",
|
|
819
820
|
"libc",
|
|
820
821
|
"plain",
|
|
821
|
-
"redox_syscall 0.9.
|
|
822
|
+
"redox_syscall 0.9.2",
|
|
822
823
|
]
|
|
823
824
|
|
|
824
825
|
[[package]]
|
|
@@ -834,9 +835,9 @@ dependencies = [
|
|
|
834
835
|
|
|
835
836
|
[[package]]
|
|
836
837
|
name = "litemap"
|
|
837
|
-
version = "0.8.
|
|
838
|
+
version = "0.8.3"
|
|
838
839
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
839
|
-
checksum = "
|
|
840
|
+
checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae"
|
|
840
841
|
|
|
841
842
|
[[package]]
|
|
842
843
|
name = "lock_api"
|
|
@@ -917,9 +918,9 @@ dependencies = [
|
|
|
917
918
|
|
|
918
919
|
[[package]]
|
|
919
920
|
name = "num-integer"
|
|
920
|
-
version = "0.1.
|
|
921
|
+
version = "0.1.47"
|
|
921
922
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
922
|
-
checksum = "
|
|
923
|
+
checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b"
|
|
923
924
|
dependencies = [
|
|
924
925
|
"num-traits",
|
|
925
926
|
]
|
|
@@ -1023,9 +1024,9 @@ dependencies = [
|
|
|
1023
1024
|
|
|
1024
1025
|
[[package]]
|
|
1025
1026
|
name = "pkg-config"
|
|
1026
|
-
version = "0.3.
|
|
1027
|
+
version = "0.3.34"
|
|
1027
1028
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1028
|
-
checksum = "
|
|
1029
|
+
checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548"
|
|
1029
1030
|
|
|
1030
1031
|
[[package]]
|
|
1031
1032
|
name = "plain"
|
|
@@ -1035,15 +1036,15 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
|
|
|
1035
1036
|
|
|
1036
1037
|
[[package]]
|
|
1037
1038
|
name = "portable-atomic"
|
|
1038
|
-
version = "1.
|
|
1039
|
+
version = "1.15.0"
|
|
1039
1040
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1040
|
-
checksum = "
|
|
1041
|
+
checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
|
|
1041
1042
|
|
|
1042
1043
|
[[package]]
|
|
1043
1044
|
name = "potential_utf"
|
|
1044
|
-
version = "0.1.
|
|
1045
|
+
version = "0.1.6"
|
|
1045
1046
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1046
|
-
checksum = "
|
|
1047
|
+
checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661"
|
|
1047
1048
|
dependencies = [
|
|
1048
1049
|
"zerovec",
|
|
1049
1050
|
]
|
|
@@ -1196,9 +1197,9 @@ dependencies = [
|
|
|
1196
1197
|
|
|
1197
1198
|
[[package]]
|
|
1198
1199
|
name = "redox_syscall"
|
|
1199
|
-
version = "0.9.
|
|
1200
|
+
version = "0.9.2"
|
|
1200
1201
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1201
|
-
checksum = "
|
|
1202
|
+
checksum = "f1c93da5bb2c5d4e6c0ef7abeead62c89169a0a4882bfb83ac892f2423aea2fe"
|
|
1202
1203
|
dependencies = [
|
|
1203
1204
|
"bitflags",
|
|
1204
1205
|
]
|
|
@@ -1262,9 +1263,9 @@ dependencies = [
|
|
|
1262
1263
|
|
|
1263
1264
|
[[package]]
|
|
1264
1265
|
name = "rustls-webpki"
|
|
1265
|
-
version = "0.103.
|
|
1266
|
+
version = "0.103.14"
|
|
1266
1267
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1267
|
-
checksum = "
|
|
1268
|
+
checksum = "0527518605e68109d875e248ea259b6758801cf165e4b2c2733ae3b51f12535a"
|
|
1268
1269
|
dependencies = [
|
|
1269
1270
|
"ring",
|
|
1270
1271
|
"rustls-pki-types",
|
|
@@ -1727,18 +1728,18 @@ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
|
1727
1728
|
|
|
1728
1729
|
[[package]]
|
|
1729
1730
|
name = "thiserror"
|
|
1730
|
-
version = "2.0.
|
|
1731
|
+
version = "2.0.20"
|
|
1731
1732
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1732
|
-
checksum = "
|
|
1733
|
+
checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
|
|
1733
1734
|
dependencies = [
|
|
1734
1735
|
"thiserror-impl",
|
|
1735
1736
|
]
|
|
1736
1737
|
|
|
1737
1738
|
[[package]]
|
|
1738
1739
|
name = "thiserror-impl"
|
|
1739
|
-
version = "2.0.
|
|
1740
|
+
version = "2.0.20"
|
|
1740
1741
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1741
|
-
checksum = "
|
|
1742
|
+
checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
|
|
1742
1743
|
dependencies = [
|
|
1743
1744
|
"proc-macro2",
|
|
1744
1745
|
"quote",
|
|
@@ -1747,9 +1748,9 @@ dependencies = [
|
|
|
1747
1748
|
|
|
1748
1749
|
[[package]]
|
|
1749
1750
|
name = "tinystr"
|
|
1750
|
-
version = "0.8.
|
|
1751
|
+
version = "0.8.4"
|
|
1751
1752
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1752
|
-
checksum = "
|
|
1753
|
+
checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643"
|
|
1753
1754
|
dependencies = [
|
|
1754
1755
|
"displaydoc",
|
|
1755
1756
|
"zerovec",
|
|
@@ -1906,9 +1907,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
|
|
|
1906
1907
|
|
|
1907
1908
|
[[package]]
|
|
1908
1909
|
name = "uuid"
|
|
1909
|
-
version = "1.24.
|
|
1910
|
+
version = "1.24.1"
|
|
1910
1911
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1911
|
-
checksum = "
|
|
1912
|
+
checksum = "2cefc03fd367c0c6d4305de1b312cf00248c4114f4a0418ce6a6af769e3b0bd9"
|
|
1912
1913
|
dependencies = [
|
|
1913
1914
|
"getrandom 0.4.3",
|
|
1914
1915
|
"js-sys",
|
|
@@ -1941,9 +1942,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
|
|
|
1941
1942
|
|
|
1942
1943
|
[[package]]
|
|
1943
1944
|
name = "wasm-bindgen"
|
|
1944
|
-
version = "0.2.
|
|
1945
|
+
version = "0.2.127"
|
|
1945
1946
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1946
|
-
checksum = "
|
|
1947
|
+
checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70"
|
|
1947
1948
|
dependencies = [
|
|
1948
1949
|
"cfg-if",
|
|
1949
1950
|
"once_cell",
|
|
@@ -1954,9 +1955,9 @@ dependencies = [
|
|
|
1954
1955
|
|
|
1955
1956
|
[[package]]
|
|
1956
1957
|
name = "wasm-bindgen-macro"
|
|
1957
|
-
version = "0.2.
|
|
1958
|
+
version = "0.2.127"
|
|
1958
1959
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1959
|
-
checksum = "
|
|
1960
|
+
checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1"
|
|
1960
1961
|
dependencies = [
|
|
1961
1962
|
"quote",
|
|
1962
1963
|
"wasm-bindgen-macro-support",
|
|
@@ -1964,9 +1965,9 @@ dependencies = [
|
|
|
1964
1965
|
|
|
1965
1966
|
[[package]]
|
|
1966
1967
|
name = "wasm-bindgen-macro-support"
|
|
1967
|
-
version = "0.2.
|
|
1968
|
+
version = "0.2.127"
|
|
1968
1969
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1969
|
-
checksum = "
|
|
1970
|
+
checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284"
|
|
1970
1971
|
dependencies = [
|
|
1971
1972
|
"bumpalo",
|
|
1972
1973
|
"proc-macro2",
|
|
@@ -1977,9 +1978,9 @@ dependencies = [
|
|
|
1977
1978
|
|
|
1978
1979
|
[[package]]
|
|
1979
1980
|
name = "wasm-bindgen-shared"
|
|
1980
|
-
version = "0.2.
|
|
1981
|
+
version = "0.2.127"
|
|
1981
1982
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1982
|
-
checksum = "
|
|
1983
|
+
checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf"
|
|
1983
1984
|
dependencies = [
|
|
1984
1985
|
"unicode-ident",
|
|
1985
1986
|
]
|
|
@@ -2221,9 +2222,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
|
|
2221
2222
|
|
|
2222
2223
|
[[package]]
|
|
2223
2224
|
name = "writeable"
|
|
2224
|
-
version = "0.6.
|
|
2225
|
+
version = "0.6.4"
|
|
2225
2226
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2226
|
-
checksum = "
|
|
2227
|
+
checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc"
|
|
2227
2228
|
|
|
2228
2229
|
[[package]]
|
|
2229
2230
|
name = "yoke"
|
|
@@ -2250,18 +2251,18 @@ dependencies = [
|
|
|
2250
2251
|
|
|
2251
2252
|
[[package]]
|
|
2252
2253
|
name = "zerocopy"
|
|
2253
|
-
version = "0.8.
|
|
2254
|
+
version = "0.8.56"
|
|
2254
2255
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2255
|
-
checksum = "
|
|
2256
|
+
checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb"
|
|
2256
2257
|
dependencies = [
|
|
2257
2258
|
"zerocopy-derive",
|
|
2258
2259
|
]
|
|
2259
2260
|
|
|
2260
2261
|
[[package]]
|
|
2261
2262
|
name = "zerocopy-derive"
|
|
2262
|
-
version = "0.8.
|
|
2263
|
+
version = "0.8.56"
|
|
2263
2264
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2264
|
-
checksum = "
|
|
2265
|
+
checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1"
|
|
2265
2266
|
dependencies = [
|
|
2266
2267
|
"proc-macro2",
|
|
2267
2268
|
"quote",
|
|
@@ -2297,9 +2298,9 @@ checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
|
|
|
2297
2298
|
|
|
2298
2299
|
[[package]]
|
|
2299
2300
|
name = "zerotrie"
|
|
2300
|
-
version = "0.2.
|
|
2301
|
+
version = "0.2.5"
|
|
2301
2302
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2302
|
-
checksum = "
|
|
2303
|
+
checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f"
|
|
2303
2304
|
dependencies = [
|
|
2304
2305
|
"displaydoc",
|
|
2305
2306
|
"yoke",
|
|
@@ -2308,9 +2309,9 @@ dependencies = [
|
|
|
2308
2309
|
|
|
2309
2310
|
[[package]]
|
|
2310
2311
|
name = "zerovec"
|
|
2311
|
-
version = "0.11.
|
|
2312
|
+
version = "0.11.7"
|
|
2312
2313
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2313
|
-
checksum = "
|
|
2314
|
+
checksum = "94b5c6b5976d66c1d703c4fd17d3f5e43c8cedaacf604961b171adc7130896d8"
|
|
2314
2315
|
dependencies = [
|
|
2315
2316
|
"yoke",
|
|
2316
2317
|
"zerofrom",
|
|
@@ -2319,13 +2320,13 @@ dependencies = [
|
|
|
2319
2320
|
|
|
2320
2321
|
[[package]]
|
|
2321
2322
|
name = "zerovec-derive"
|
|
2322
|
-
version = "0.11.
|
|
2323
|
+
version = "0.11.5"
|
|
2323
2324
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2324
|
-
checksum = "
|
|
2325
|
+
checksum = "9f212a141d820099d57ffafb9569be9617a6f27d3dc881fbee8fb56642f917a9"
|
|
2325
2326
|
dependencies = [
|
|
2326
2327
|
"proc-macro2",
|
|
2327
2328
|
"quote",
|
|
2328
|
-
"syn
|
|
2329
|
+
"syn 3.0.3",
|
|
2329
2330
|
]
|
|
2330
2331
|
|
|
2331
2332
|
[[package]]
|