ferro-orm 0.17.0__tar.gz → 0.18.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.17.0 → ferro_orm-0.18.0}/AGENTS.md +10 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/CHANGELOG.md +41 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/CONTEXT.md +24 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/Cargo.lock +83 -82
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/Cargo.toml +1 -1
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/PKG-INFO +1 -1
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/crates/ferro-ddl-lowering/src/lib.rs +113 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/crates/ferro-migrate/src/emit.rs +89 -10
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/crates/ferro-migrate/src/lib.rs +103 -1
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/crates/ferro-migrate/src/tests.rs +343 -0
- ferro_orm-0.18.0/docs/adr/0010-create-pass-owns-only-missing-tables.md +39 -0
- ferro_orm-0.18.0/docs/adr/0011-label-addition-update-gated-append-only.md +65 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/concepts/architecture.md +1 -1
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/faq.md +1 -1
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/guide/migrations.md +74 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/pyproject.toml +1 -1
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/__init__.py +16 -4
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/_core.pyi +12 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/migrations/alembic.py +138 -1
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/introspect.rs +260 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/lib.rs +1 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/migrate.rs +122 -7
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/naming_ffi.rs +23 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/schema.rs +13 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_auto_migrate.py +169 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_cross_emitter_parity.py +20 -0
- ferro_orm-0.18.0/tests/test_label_addition.py +380 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_migrate_plan.py +84 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.github/PERMISSIONS.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.github/PYPI_CHECKLIST.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.github/PYPI_SETUP.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.github/generated/wheels.generated.yml +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.github/pull_request_template.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.github/workflows/ci.yml +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.github/workflows/packaging-smoke.yml +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.github/workflows/publish-docs.yml +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.github/workflows/publish.yml +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.github/workflows/release.yml +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.gitignore +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.pre-commit-config.yaml +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/.python-version +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/CONTRIBUTING.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/LICENSE +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/README.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/benchmarks/README.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/benchmarks/__init__.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/benchmarks/__main__.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/benchmarks/backends.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/benchmarks/baselines/postgres.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/benchmarks/baselines/sqlite.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/benchmarks/compare.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/benchmarks/harness.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/benchmarks/model.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/benchmarks/run.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/crates/ferro-ddl-lowering/Cargo.toml +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/crates/ferro-migrate/Cargo.toml +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/crates/ferro-migrate/src/order.rs +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/crates/ferro-schema-ir/Cargo.toml +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/crates/ferro-schema-ir/src/lib.rs +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/adr/0001-resolved-epoch-registration.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/adr/0002-unified-column-fact-derivation.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/adr/0003-path-blind-db-type-validation.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/adr/0004-jsonb-postgres-only-canonical.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/adr/0005-jsonb-default-on-postgres.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/adr/0006-relation-traversal-inner-joins.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/adr/0007-materialization-plan-complete-instances.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/adr/0007-reverse-relations-tested-not-traversed.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/adr/0008-populated-relations-include.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/adr/0008-predicate-negation-uniform-not.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/adr/0009-aggregate-projections-derived-grouping.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/agents/domain.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/agents/issue-tracker.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/agents/triage-labels.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/architecture-review-2026-07-08.html +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-04-29-named-connections-role-routing-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-05-08-typed-query-predicates-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-05-13-configurable-column-storage-types-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-05-14-autogenerate-support-for-db-type-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-05-25-annotated-strenum-cold-hydration-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-06-24-ir-p8-119-wire-automigrate-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-06-25-ir-p8-120-parity-gate-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-06-26-ir-p8.5-140-shared-lowering-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-06-26-ir-p8.5-143-db-type-drop-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-06-26-ir-p8.5-144-reconcile-indexes-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-06-28-ir-p8.5-141-single-schema-ir-producer-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-06-29-ir-p8.6-146-dialect-enum-unification-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-06-29-ir-p8.6-153-create-path-ir-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-06-30-ir-p8.6-155-deferred-annotations-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-06-30-ir-p8.6-158-check-renderer-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-07-01-ir-p8.6-154-datetime-tz-coarseness-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-07-01-ir-p8.6-162-typed-save-bind-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-07-01-ir-p8.6-165-blob-introspection-false-positive-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-07-02-ff-c1-codec-plan-design.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/brainstorms/2026-07-06-upgrade-guide-consolidation-requirements.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/aggregations.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/aggregations_annotated.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/existence_tests.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/existence_tests_annotated.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/multiple_databases.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/mutations.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/pagination.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/partial_selects.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/partial_selects_annotated.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/populated_relations.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/populated_relations_annotated.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/predicates.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/predicates_annotated.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/quickstart.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/quickstart_annotated.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/raw_sql.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/relationships.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/relationships_annotated.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/soft_deletes.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/soft_deletes_annotated.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/testing_conftest.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/timestamps.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/timestamps_annotated.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/transactions.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/traversal.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/examples/traversal_annotated.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/api/connection.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/api/exceptions.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/api/fields.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/api/migrations.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/api/model.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/api/queries.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/api/raw-sql.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/api/relationships.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/api/transactions.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/changelog.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/concepts/backends.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/concepts/identity-map.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/concepts/performance.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/concepts/query-typing.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/concepts/type-safety.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/contributing.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/getting-started/installation.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/getting-started/next-steps.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/getting-started/quickstart.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/guide/aggregations.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/guide/connections.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/guide/models-and-fields.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/guide/mutations.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/guide/queries.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/guide/raw-sql.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/guide/relationships.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/guide/transactions.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/howto/migrate-from-sqlalchemy.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/howto/multiple-databases.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/howto/pagination.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/howto/soft-deletes.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/howto/testing.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/howto/timestamps.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/howto/upgrade-guide.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/index.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/roadmap.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/stylesheets/extra.css +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/pages/why-ferro.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-04-24-001-refactor-multi-db-backend-architecture-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-04-29-001-typed-null-binds-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-04-29-002-feat-named-connections-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-05-07-001-refactor-generic-model-connection-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-05-08-001-feat-typed-query-predicates-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-05-13-001-feat-configurable-column-storage-types-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-05-25-001-fix-annotated-strenum-cold-hydration-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-06-19-001-ir-first-roadmap.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-06-24-001-feat-ir-p8-119-wire-automigrate-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-06-25-001-feat-ir-p8-120-parity-gate-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-06-26-001-feat-ir-p8.5-140-shared-lowering-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-06-26-002-feat-ir-p8.5-143-db-type-drop-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-06-26-003-feat-ir-p8.5-144-reconcile-indexes-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-06-28-001-feat-ir-p8.5-141-single-schema-ir-producer-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-06-29-001-refactor-ir-p8.6-153-create-path-unification-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-06-29-002-refactor-ir-p8.6-146-dialect-enum-unification-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-06-30-001-refactor-ir-p8.6-158-check-renderer-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-06-30-002-fix-ir-p8.6-155-deferred-annotations-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-01-001-feat-ir-p8.6-162-typed-save-bind-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-01-002-fix-ir-p8.6-154-datetime-tz-coarseness-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-01-003-fix-ir-p8.6-165-blob-introspection-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-02-001-fable-fixes-roadmap.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-02-002-feat-ff-a-172-typed-exceptions-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-02-003-ff-c-native-decode-design.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-02-004-ff-c-c2-catalog-cache-design.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-02-005-ff-d-identity-routing-design.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-02-006-ff-d-identity-routing-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-03-007-ff-e-registry-identity-design.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-03-008-ff-e-registry-identity-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-06-009-ff-f-query-builder-1.0-design.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-06-010-ff-f-query-builder-1.0-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-06-011-ff-g-hardening-design.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-06-012-ff-g-hardening-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-06-013-ff-g2-operations-dedup-design.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-06-014-ff-g2-operations-dedup-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-06-015-docs-upgrade-guide-consolidation-plan.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/2026-07-18-016-existence-tests-design.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/ir-first-migration-guide.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/plans/ir-first-release-checklist.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/rfc/ir-contracts-v1.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/README.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/architecture-patterns/ir-first-lowering-consolidation-audit.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/architecture-patterns/ir-first-merge-readiness-review.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/issues/pydantic-slots-missing-after-ferro-hydration.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/issues/python-3.14-deferred-annotation-typeerror-swallow.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/issues/sa-pk-column-nullable-divergence.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/issues/sa-vs-rust-unique-constraint-shape.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/issues/self-fk-evicts-component-from-create-order.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/issues/sqlite-integer-decimal-hydrates-as-none.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/issues/sqlite-null-hydrates-as-int-zero.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/issues/typed-where-null-panics-is-null.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/patterns/configurable-column-storage-types.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/patterns/cross-emitter-ddl-parity.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/patterns/ddl-on-live-engine.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/patterns/derived-type-and-naming-decision-table.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/patterns/foreign-key-index.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/patterns/index-unique-redundancy.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/patterns/ir-invariants.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/patterns/persistence-state.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/patterns/shadow-fk-columns.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/patterns/sqlite-alembic-reconnect-hydration-tests.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/docs/solutions/patterns/typed-null-binds.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/justfile +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/scripts/demo_queries.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/scripts/demo_queries_pre_v012.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/backend.rs +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/codec.rs +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/codec_plan.rs +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/connection.rs +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/errors.rs +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/_annotation_utils.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/_bind_payload.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/_deprecations.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/_shadow_fk_types.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/base.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/columns.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/composite_indexes.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/composite_uniques.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/exceptions.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/fields.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/ir/__init__.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/ir/compiler.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/metaclass.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/migrations/__init__.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/models.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/py.typed +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/query/__init__.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/query/builder.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/query/nodes.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/query/rows.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/query/wire.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/raw.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/registry.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/relations/__init__.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/relations/descriptors.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/session.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/ferro/state.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/hydration.rs +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/operations.rs +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/query.rs +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/schema_bind.rs +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/src/state.rs +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/__init__.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/conftest.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/db_backends.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/README.md +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/codec_registry_core_v1.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_account_exists_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_account_scoped_exists_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_owner_nested_exists_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_owner_not_exists_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_transaction_aggregate_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_transaction_global_aggregate_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_transaction_include_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_transaction_left_join_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_transaction_record_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_transaction_traversal_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_transaction_traversed_record_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_user_compound_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_user_m2m_exists_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_user_not_compound_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/query_user_not_leaf_v7.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/schema_invoice_baseline_v1.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/schema_phase1_fixture_models_v1.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/fixtures/ir_vectors/schema_raw_str_pk_autoincrement_v1.json +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/static_fixtures/bad_includes.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/static_fixtures/bad_predicates.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/static_fixtures/bad_projections.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/static_fixtures/good_includes.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/static_fixtures/good_predicates.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/static_fixtures/good_projections.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_aggregation.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_alembic_autogenerate.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_alembic_bridge.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_alembic_db_type.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_alembic_nullability.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_alembic_type_mapping.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_annotation_utils.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_bulk_create_chunking.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_bulk_install.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_bulk_update.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_catalog_cache.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_codec_plan.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_column_specs.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_compiled_query.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_composite_index.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_composite_unique.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_connection.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_connection_redaction.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_constraints.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_crud.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_db_backends.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_db_type_cross_emitter_parity.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_db_type_integration.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_db_type_typing.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_db_type_validation.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_deletion.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_deprecations.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_docs_examples.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_documentation_features.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_enum_cold_hydration.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_exception_mapping.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_exceptions.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_field_wrapper.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_fk_target_pk.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_generation_counter_dirty_tracking.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_global_aggregates.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_grouped_aggregates.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_helpers.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_hydration.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_hydration_equivalence.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_identity_memory.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_identity_refresh.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_identity_scoped_invalidation.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_identity_weakref.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_import_budget.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_include.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_ir_vectors_contract.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_metaclass_internals.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_metadata.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_model_identity.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_models.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_mutation_pagination_guard.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_named_connections_integration.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_naming_single_source.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_negation.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_one_to_one.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_operation_seam_sync.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_partial_selects.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_primary_key_facts.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_provisional_import.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_query_builder.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_query_column_validation.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_query_exists.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_query_immutability.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_query_joins.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_query_typing.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_query_wire_vectors.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_raw_sql.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_refresh.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_registry_entrypoints.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_registry_owner.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_relation_specs.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_relationship_engine.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_relationship_resolution_errors.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_route_single_site.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_routing_errors.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_save_pk_edges.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_save_semantics.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_schema.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_schema_constraints.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_schema_db_type_metadata.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_schema_enum_annotations.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_session.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_shadow_fk_types.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_sqlite_alembic_reconnect_hydration.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_static_contracts.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_string_search.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_structural_types.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_temporal_types.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_transactions.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_traversed_projection.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_typed_null_binds.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/tests/test_typed_save_bind.py +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/uv.lock +0 -0
- {ferro_orm-0.17.0 → ferro_orm-0.18.0}/zensical.toml +0 -0
|
@@ -50,6 +50,16 @@ For a single model, every emitter must agree on:
|
|
|
50
50
|
and `db_check_constraint_name` (Rust).
|
|
51
51
|
9. **Default values** — server-side defaults must serialize identically.
|
|
52
52
|
10. **Nullability** — must agree.
|
|
53
|
+
11. **Enum label additions** — the label-addition decision (which model-declared
|
|
54
|
+
labels a live enum type is missing, and which live labels are extra) and
|
|
55
|
+
the rendered `ALTER TYPE ... ADD VALUE IF NOT EXISTS` statement are decided
|
|
56
|
+
by ONE pair of functions: `ferro_ddl_lowering::missing_enum_labels` /
|
|
57
|
+
`extra_enum_labels` + `render_pg_enum_add_value`. The auto-migrate
|
|
58
|
+
reconciliation pass consumes them directly; the Alembic autogenerate
|
|
59
|
+
comparator consumes them over FFI (`_core._plan_enum_label_addition`) and
|
|
60
|
+
executes the byte-identical statements. Pinned by
|
|
61
|
+
`tests/test_cross_emitter_parity.py` and the ferro-ddl-lowering unit pins.
|
|
62
|
+
See ADR-0011 (append-only; update-gated; warn-never-act for extras).
|
|
53
63
|
|
|
54
64
|
### Why this invariant exists
|
|
55
65
|
|
|
@@ -1,6 +1,47 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## v0.18.0 (2026-08-05)
|
|
5
|
+
|
|
6
|
+
### Documentation
|
|
7
|
+
|
|
8
|
+
- **adr**: ADR-0011 label addition + glossary terms (enum label, label addition)
|
|
9
|
+
([`449616f`](https://github.com/syn54x/ferro-orm/commit/449616f07aefe473fe098f45f6873eb2003cf8e5))
|
|
10
|
+
|
|
11
|
+
- **migrate**: Label addition — the auto_migrate trap, the migrate_updates contract, the ordering
|
|
12
|
+
caveat ([#334](https://github.com/syn54x/ferro-orm/pull/334),
|
|
13
|
+
[`482911b`](https://github.com/syn54x/ferro-orm/commit/482911b441eeeed21b13d3927c9492797bb1eba5))
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
- **alembic**: Autogenerate comparator emits label additions from the shared diff
|
|
18
|
+
([#333](https://github.com/syn54x/ferro-orm/pull/333),
|
|
19
|
+
[`1579fc3`](https://github.com/syn54x/ferro-orm/commit/1579fc38a7f0d2b94c4ea51aa7daac652df30abc))
|
|
20
|
+
|
|
21
|
+
- **migrate**: Label addition tracer — migrate_updates appends missing enum labels
|
|
22
|
+
([#330](https://github.com/syn54x/ferro-orm/pull/330),
|
|
23
|
+
[`e929a6a`](https://github.com/syn54x/ferro-orm/commit/e929a6ae854fd435c6aac3277e476c15b106f73a))
|
|
24
|
+
|
|
25
|
+
- **migrate**: Warn-never-act for extra enum labels; create pass stays silent
|
|
26
|
+
([#331](https://github.com/syn54x/ferro-orm/pull/331),
|
|
27
|
+
[`a73d142`](https://github.com/syn54x/ferro-orm/commit/a73d142e2ff22ef8e47c2a8b8c34ca92372d0487))
|
|
28
|
+
|
|
29
|
+
### Testing
|
|
30
|
+
|
|
31
|
+
- **migrate**: Label addition edges — shared types, default-in-same-run, ordering, idempotence
|
|
32
|
+
([#332](https://github.com/syn54x/ferro-orm/pull/332),
|
|
33
|
+
[`1215f0c`](https://github.com/syn54x/ferro-orm/commit/1215f0c0e52367eafd91411b7b7891220edf318e))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## v0.17.1 (2026-07-19)
|
|
37
|
+
|
|
38
|
+
### Bug Fixes
|
|
39
|
+
|
|
40
|
+
- **migrate**: Auto-migrate pass ownership — column-before-index sequencing and FK on_delete
|
|
41
|
+
reconciliation ([#326](https://github.com/syn54x/ferro-orm/pull/326),
|
|
42
|
+
[`3451b1d`](https://github.com/syn54x/ferro-orm/commit/3451b1dad37d8ac39709d986aa20b1de4c12542a))
|
|
43
|
+
|
|
44
|
+
|
|
4
45
|
## v0.17.0 (2026-07-18)
|
|
5
46
|
|
|
6
47
|
### Documentation
|
|
@@ -123,3 +123,27 @@ _Avoid_: Import-time registration, partial registry
|
|
|
123
123
|
**Resolved registration**:
|
|
124
124
|
The registry epoch after relationship resolution completes — join tables exist, shadow FK columns are wired, and the SchemaIR modelset is authoritative for DDL and auto-migrate.
|
|
125
125
|
_Avoid_: Final registration, committed registry
|
|
126
|
+
|
|
127
|
+
**Create pass**:
|
|
128
|
+
The auto-migrate step that brings missing tables into existence — the table, its columns, its indexes and constraints, together. A table that already exists is left completely untouched by this pass, whatever its shape.
|
|
129
|
+
_Avoid_: Bootstrap, ensure-tables, table sync
|
|
130
|
+
|
|
131
|
+
**Reconciliation pass**:
|
|
132
|
+
The `migrate_updates` step that alters existing schema objects — tables and ferro-owned enum types — to match the registered models; the only authority for DDL against an object that already exists. Within one table, column changes land before the indexes and constraints that reference them; label additions land before any table's changes.
|
|
133
|
+
_Avoid_: Update pass, schema sync, drift repair
|
|
134
|
+
|
|
135
|
+
**Ferro-owned artifact**:
|
|
136
|
+
A schema object ferro may reconcile to match the declared model. Indexes and constraints are ferro-owned by naming (`idx_`, `uq_`, `fk_`, `ck_`); native enum types are ferro-owned by derivation — the type's name matches the name ferro derives from the model. Artifacts owned neither way belong to the user and are never altered or dropped.
|
|
137
|
+
_Avoid_: Managed index, system constraint, internal index
|
|
138
|
+
|
|
139
|
+
**Enum label**:
|
|
140
|
+
One storable value of a native Postgres enum type, mirrored from a Python `StrEnum` member's value. Members are the Python-side declaration; labels are what the database accepts and stores.
|
|
141
|
+
_Avoid_: Enum value, variant, choice
|
|
142
|
+
|
|
143
|
+
**Label addition**:
|
|
144
|
+
The reconciliation-pass operation appending model-declared labels missing from a live ferro-owned enum type. Append-only and metadata-only: rows are never touched, and labels the database has but the model lacks are warned about loudly and never removed — removal and rename are reviewed-migration territory.
|
|
145
|
+
_Avoid_: Enum sync, label reconciliation, enum evolution
|
|
146
|
+
|
|
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.
|
|
149
|
+
_Avoid_: Constraint alter, FK patch, in-place constraint update
|
|
@@ -10,9 +10,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
|
|
|
10
10
|
|
|
11
11
|
[[package]]
|
|
12
12
|
name = "android_system_properties"
|
|
13
|
-
version = "0.1.
|
|
13
|
+
version = "0.1.6"
|
|
14
14
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
-
checksum = "
|
|
15
|
+
checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc"
|
|
16
16
|
dependencies = [
|
|
17
17
|
"libc",
|
|
18
18
|
]
|
|
@@ -95,9 +95,9 @@ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
|
|
|
95
95
|
|
|
96
96
|
[[package]]
|
|
97
97
|
name = "cc"
|
|
98
|
-
version = "1.
|
|
98
|
+
version = "1.4.0"
|
|
99
99
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
100
|
-
checksum = "
|
|
100
|
+
checksum = "5add81bb678e6cb321aff7fa0dc7689ad82b112dbc032cea19f91d6b8e3582b9"
|
|
101
101
|
dependencies = [
|
|
102
102
|
"find-msvc-tools",
|
|
103
103
|
"shlex",
|
|
@@ -120,15 +120,6 @@ dependencies = [
|
|
|
120
120
|
"windows-link",
|
|
121
121
|
]
|
|
122
122
|
|
|
123
|
-
[[package]]
|
|
124
|
-
name = "concurrent-queue"
|
|
125
|
-
version = "2.5.0"
|
|
126
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
127
|
-
checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
|
|
128
|
-
dependencies = [
|
|
129
|
-
"crossbeam-utils",
|
|
130
|
-
]
|
|
131
|
-
|
|
132
123
|
[[package]]
|
|
133
124
|
name = "const-oid"
|
|
134
125
|
version = "0.9.6"
|
|
@@ -210,7 +201,7 @@ dependencies = [
|
|
|
210
201
|
"ident_case",
|
|
211
202
|
"proc-macro2",
|
|
212
203
|
"quote",
|
|
213
|
-
"syn",
|
|
204
|
+
"syn 2.0.119",
|
|
214
205
|
]
|
|
215
206
|
|
|
216
207
|
[[package]]
|
|
@@ -221,7 +212,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
|
|
|
221
212
|
dependencies = [
|
|
222
213
|
"darling_core",
|
|
223
214
|
"quote",
|
|
224
|
-
"syn",
|
|
215
|
+
"syn 2.0.119",
|
|
225
216
|
]
|
|
226
217
|
|
|
227
218
|
[[package]]
|
|
@@ -263,13 +254,13 @@ dependencies = [
|
|
|
263
254
|
|
|
264
255
|
[[package]]
|
|
265
256
|
name = "displaydoc"
|
|
266
|
-
version = "0.2.
|
|
257
|
+
version = "0.2.7"
|
|
267
258
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
268
|
-
checksum = "
|
|
259
|
+
checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
|
|
269
260
|
dependencies = [
|
|
270
261
|
"proc-macro2",
|
|
271
262
|
"quote",
|
|
272
|
-
"syn",
|
|
263
|
+
"syn 3.0.3",
|
|
273
264
|
]
|
|
274
265
|
|
|
275
266
|
[[package]]
|
|
@@ -280,9 +271,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
|
|
|
280
271
|
|
|
281
272
|
[[package]]
|
|
282
273
|
name = "either"
|
|
283
|
-
version = "1.
|
|
274
|
+
version = "1.17.0"
|
|
284
275
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
285
|
-
checksum = "
|
|
276
|
+
checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d"
|
|
286
277
|
dependencies = [
|
|
287
278
|
"serde",
|
|
288
279
|
]
|
|
@@ -316,18 +307,17 @@ dependencies = [
|
|
|
316
307
|
|
|
317
308
|
[[package]]
|
|
318
309
|
name = "event-listener"
|
|
319
|
-
version = "5.4.
|
|
310
|
+
version = "5.4.2"
|
|
320
311
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
321
|
-
checksum = "
|
|
312
|
+
checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2"
|
|
322
313
|
dependencies = [
|
|
323
|
-
"concurrent-queue",
|
|
324
314
|
"parking",
|
|
325
315
|
"pin-project-lite",
|
|
326
316
|
]
|
|
327
317
|
|
|
328
318
|
[[package]]
|
|
329
319
|
name = "ferro"
|
|
330
|
-
version = "0.
|
|
320
|
+
version = "0.18.0"
|
|
331
321
|
dependencies = [
|
|
332
322
|
"chrono",
|
|
333
323
|
"dashmap",
|
|
@@ -477,7 +467,7 @@ checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b"
|
|
|
477
467
|
dependencies = [
|
|
478
468
|
"proc-macro2",
|
|
479
469
|
"quote",
|
|
480
|
-
"syn",
|
|
470
|
+
"syn 2.0.119",
|
|
481
471
|
]
|
|
482
472
|
|
|
483
473
|
[[package]]
|
|
@@ -772,13 +762,13 @@ dependencies = [
|
|
|
772
762
|
|
|
773
763
|
[[package]]
|
|
774
764
|
name = "inherent"
|
|
775
|
-
version = "1.0.
|
|
765
|
+
version = "1.0.14"
|
|
776
766
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
777
|
-
checksum = "
|
|
767
|
+
checksum = "bee2c455ca60511a054699102d40ce7153621cb2429558f9eaa600e4499b5984"
|
|
778
768
|
dependencies = [
|
|
779
769
|
"proc-macro2",
|
|
780
770
|
"quote",
|
|
781
|
-
"syn",
|
|
771
|
+
"syn 3.0.3",
|
|
782
772
|
]
|
|
783
773
|
|
|
784
774
|
[[package]]
|
|
@@ -809,9 +799,9 @@ dependencies = [
|
|
|
809
799
|
|
|
810
800
|
[[package]]
|
|
811
801
|
name = "libc"
|
|
812
|
-
version = "0.2.
|
|
802
|
+
version = "0.2.189"
|
|
813
803
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
814
|
-
checksum = "
|
|
804
|
+
checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
|
|
815
805
|
|
|
816
806
|
[[package]]
|
|
817
807
|
name = "libm"
|
|
@@ -821,14 +811,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
|
|
821
811
|
|
|
822
812
|
[[package]]
|
|
823
813
|
name = "libredox"
|
|
824
|
-
version = "0.1.
|
|
814
|
+
version = "0.1.19"
|
|
825
815
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
826
|
-
checksum = "
|
|
816
|
+
checksum = "2026a5056764a10b2bf5d56488cba40da507f5493a6a429340e2004d9ed085fa"
|
|
827
817
|
dependencies = [
|
|
828
818
|
"bitflags",
|
|
829
819
|
"libc",
|
|
830
820
|
"plain",
|
|
831
|
-
"redox_syscall 0.9.
|
|
821
|
+
"redox_syscall 0.9.1",
|
|
832
822
|
]
|
|
833
823
|
|
|
834
824
|
[[package]]
|
|
@@ -1069,9 +1059,9 @@ dependencies = [
|
|
|
1069
1059
|
|
|
1070
1060
|
[[package]]
|
|
1071
1061
|
name = "proc-macro2"
|
|
1072
|
-
version = "1.0.
|
|
1062
|
+
version = "1.0.107"
|
|
1073
1063
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1074
|
-
checksum = "
|
|
1064
|
+
checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
|
|
1075
1065
|
dependencies = [
|
|
1076
1066
|
"unicode-ident",
|
|
1077
1067
|
]
|
|
@@ -1134,7 +1124,7 @@ dependencies = [
|
|
|
1134
1124
|
"proc-macro2",
|
|
1135
1125
|
"pyo3-macros-backend",
|
|
1136
1126
|
"quote",
|
|
1137
|
-
"syn",
|
|
1127
|
+
"syn 2.0.119",
|
|
1138
1128
|
]
|
|
1139
1129
|
|
|
1140
1130
|
[[package]]
|
|
@@ -1147,14 +1137,14 @@ dependencies = [
|
|
|
1147
1137
|
"proc-macro2",
|
|
1148
1138
|
"pyo3-build-config",
|
|
1149
1139
|
"quote",
|
|
1150
|
-
"syn",
|
|
1140
|
+
"syn 2.0.119",
|
|
1151
1141
|
]
|
|
1152
1142
|
|
|
1153
1143
|
[[package]]
|
|
1154
1144
|
name = "quote"
|
|
1155
|
-
version = "1.0.
|
|
1145
|
+
version = "1.0.47"
|
|
1156
1146
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1157
|
-
checksum = "
|
|
1147
|
+
checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
|
|
1158
1148
|
dependencies = [
|
|
1159
1149
|
"proc-macro2",
|
|
1160
1150
|
]
|
|
@@ -1206,9 +1196,9 @@ dependencies = [
|
|
|
1206
1196
|
|
|
1207
1197
|
[[package]]
|
|
1208
1198
|
name = "redox_syscall"
|
|
1209
|
-
version = "0.9.
|
|
1199
|
+
version = "0.9.1"
|
|
1210
1200
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1211
|
-
checksum = "
|
|
1201
|
+
checksum = "07507be7b4a5f9f26eeb41eeaebb1f5a7ff29dfb29739facc21d35bf8b11c21e"
|
|
1212
1202
|
dependencies = [
|
|
1213
1203
|
"bitflags",
|
|
1214
1204
|
]
|
|
@@ -1249,9 +1239,9 @@ dependencies = [
|
|
|
1249
1239
|
|
|
1250
1240
|
[[package]]
|
|
1251
1241
|
name = "rustls"
|
|
1252
|
-
version = "0.23.
|
|
1242
|
+
version = "0.23.43"
|
|
1253
1243
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1254
|
-
checksum = "
|
|
1244
|
+
checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06"
|
|
1255
1245
|
dependencies = [
|
|
1256
1246
|
"once_cell",
|
|
1257
1247
|
"ring",
|
|
@@ -1263,9 +1253,9 @@ dependencies = [
|
|
|
1263
1253
|
|
|
1264
1254
|
[[package]]
|
|
1265
1255
|
name = "rustls-pki-types"
|
|
1266
|
-
version = "1.15.
|
|
1256
|
+
version = "1.15.1"
|
|
1267
1257
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1268
|
-
checksum = "
|
|
1258
|
+
checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96"
|
|
1269
1259
|
dependencies = [
|
|
1270
1260
|
"zeroize",
|
|
1271
1261
|
]
|
|
@@ -1320,15 +1310,15 @@ dependencies = [
|
|
|
1320
1310
|
"heck 0.4.1",
|
|
1321
1311
|
"proc-macro2",
|
|
1322
1312
|
"quote",
|
|
1323
|
-
"syn",
|
|
1313
|
+
"syn 2.0.119",
|
|
1324
1314
|
"thiserror",
|
|
1325
1315
|
]
|
|
1326
1316
|
|
|
1327
1317
|
[[package]]
|
|
1328
1318
|
name = "serde"
|
|
1329
|
-
version = "1.0.
|
|
1319
|
+
version = "1.0.229"
|
|
1330
1320
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1331
|
-
checksum = "
|
|
1321
|
+
checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
|
|
1332
1322
|
dependencies = [
|
|
1333
1323
|
"serde_core",
|
|
1334
1324
|
"serde_derive",
|
|
@@ -1336,29 +1326,29 @@ dependencies = [
|
|
|
1336
1326
|
|
|
1337
1327
|
[[package]]
|
|
1338
1328
|
name = "serde_core"
|
|
1339
|
-
version = "1.0.
|
|
1329
|
+
version = "1.0.229"
|
|
1340
1330
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1341
|
-
checksum = "
|
|
1331
|
+
checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
|
|
1342
1332
|
dependencies = [
|
|
1343
1333
|
"serde_derive",
|
|
1344
1334
|
]
|
|
1345
1335
|
|
|
1346
1336
|
[[package]]
|
|
1347
1337
|
name = "serde_derive"
|
|
1348
|
-
version = "1.0.
|
|
1338
|
+
version = "1.0.229"
|
|
1349
1339
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1350
|
-
checksum = "
|
|
1340
|
+
checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
|
|
1351
1341
|
dependencies = [
|
|
1352
1342
|
"proc-macro2",
|
|
1353
1343
|
"quote",
|
|
1354
|
-
"syn",
|
|
1344
|
+
"syn 3.0.3",
|
|
1355
1345
|
]
|
|
1356
1346
|
|
|
1357
1347
|
[[package]]
|
|
1358
1348
|
name = "serde_json"
|
|
1359
|
-
version = "1.0.
|
|
1349
|
+
version = "1.0.151"
|
|
1360
1350
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1361
|
-
checksum = "
|
|
1351
|
+
checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
|
|
1362
1352
|
dependencies = [
|
|
1363
1353
|
"itoa",
|
|
1364
1354
|
"memchr",
|
|
@@ -1533,7 +1523,7 @@ dependencies = [
|
|
|
1533
1523
|
"quote",
|
|
1534
1524
|
"sqlx-core",
|
|
1535
1525
|
"sqlx-macros-core",
|
|
1536
|
-
"syn",
|
|
1526
|
+
"syn 2.0.119",
|
|
1537
1527
|
]
|
|
1538
1528
|
|
|
1539
1529
|
[[package]]
|
|
@@ -1556,7 +1546,7 @@ dependencies = [
|
|
|
1556
1546
|
"sqlx-mysql",
|
|
1557
1547
|
"sqlx-postgres",
|
|
1558
1548
|
"sqlx-sqlite",
|
|
1559
|
-
"syn",
|
|
1549
|
+
"syn 2.0.119",
|
|
1560
1550
|
"tokio",
|
|
1561
1551
|
"url",
|
|
1562
1552
|
]
|
|
@@ -1707,6 +1697,17 @@ dependencies = [
|
|
|
1707
1697
|
"unicode-ident",
|
|
1708
1698
|
]
|
|
1709
1699
|
|
|
1700
|
+
[[package]]
|
|
1701
|
+
name = "syn"
|
|
1702
|
+
version = "3.0.3"
|
|
1703
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1704
|
+
checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3"
|
|
1705
|
+
dependencies = [
|
|
1706
|
+
"proc-macro2",
|
|
1707
|
+
"quote",
|
|
1708
|
+
"unicode-ident",
|
|
1709
|
+
]
|
|
1710
|
+
|
|
1710
1711
|
[[package]]
|
|
1711
1712
|
name = "synstructure"
|
|
1712
1713
|
version = "0.13.2"
|
|
@@ -1715,7 +1716,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
|
|
|
1715
1716
|
dependencies = [
|
|
1716
1717
|
"proc-macro2",
|
|
1717
1718
|
"quote",
|
|
1718
|
-
"syn",
|
|
1719
|
+
"syn 2.0.119",
|
|
1719
1720
|
]
|
|
1720
1721
|
|
|
1721
1722
|
[[package]]
|
|
@@ -1726,22 +1727,22 @@ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
|
1726
1727
|
|
|
1727
1728
|
[[package]]
|
|
1728
1729
|
name = "thiserror"
|
|
1729
|
-
version = "2.0.
|
|
1730
|
+
version = "2.0.19"
|
|
1730
1731
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1731
|
-
checksum = "
|
|
1732
|
+
checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9"
|
|
1732
1733
|
dependencies = [
|
|
1733
1734
|
"thiserror-impl",
|
|
1734
1735
|
]
|
|
1735
1736
|
|
|
1736
1737
|
[[package]]
|
|
1737
1738
|
name = "thiserror-impl"
|
|
1738
|
-
version = "2.0.
|
|
1739
|
+
version = "2.0.19"
|
|
1739
1740
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1740
|
-
checksum = "
|
|
1741
|
+
checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd"
|
|
1741
1742
|
dependencies = [
|
|
1742
1743
|
"proc-macro2",
|
|
1743
1744
|
"quote",
|
|
1744
|
-
"syn",
|
|
1745
|
+
"syn 3.0.3",
|
|
1745
1746
|
]
|
|
1746
1747
|
|
|
1747
1748
|
[[package]]
|
|
@@ -1771,9 +1772,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|
|
1771
1772
|
|
|
1772
1773
|
[[package]]
|
|
1773
1774
|
name = "tokio"
|
|
1774
|
-
version = "1.53.
|
|
1775
|
+
version = "1.53.1"
|
|
1775
1776
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1776
|
-
checksum = "
|
|
1777
|
+
checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed"
|
|
1777
1778
|
dependencies = [
|
|
1778
1779
|
"bytes",
|
|
1779
1780
|
"libc",
|
|
@@ -1788,20 +1789,20 @@ dependencies = [
|
|
|
1788
1789
|
|
|
1789
1790
|
[[package]]
|
|
1790
1791
|
name = "tokio-macros"
|
|
1791
|
-
version = "2.7.
|
|
1792
|
+
version = "2.7.2"
|
|
1792
1793
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1793
|
-
checksum = "
|
|
1794
|
+
checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e"
|
|
1794
1795
|
dependencies = [
|
|
1795
1796
|
"proc-macro2",
|
|
1796
1797
|
"quote",
|
|
1797
|
-
"syn",
|
|
1798
|
+
"syn 3.0.3",
|
|
1798
1799
|
]
|
|
1799
1800
|
|
|
1800
1801
|
[[package]]
|
|
1801
1802
|
name = "tokio-stream"
|
|
1802
|
-
version = "0.1.
|
|
1803
|
+
version = "0.1.19"
|
|
1803
1804
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1804
|
-
checksum = "
|
|
1805
|
+
checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b"
|
|
1805
1806
|
dependencies = [
|
|
1806
1807
|
"futures-core",
|
|
1807
1808
|
"pin-project-lite",
|
|
@@ -1828,7 +1829,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
|
|
|
1828
1829
|
dependencies = [
|
|
1829
1830
|
"proc-macro2",
|
|
1830
1831
|
"quote",
|
|
1831
|
-
"syn",
|
|
1832
|
+
"syn 2.0.119",
|
|
1832
1833
|
]
|
|
1833
1834
|
|
|
1834
1835
|
[[package]]
|
|
@@ -1970,7 +1971,7 @@ dependencies = [
|
|
|
1970
1971
|
"bumpalo",
|
|
1971
1972
|
"proc-macro2",
|
|
1972
1973
|
"quote",
|
|
1973
|
-
"syn",
|
|
1974
|
+
"syn 2.0.119",
|
|
1974
1975
|
"wasm-bindgen-shared",
|
|
1975
1976
|
]
|
|
1976
1977
|
|
|
@@ -2032,7 +2033,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
|
|
|
2032
2033
|
dependencies = [
|
|
2033
2034
|
"proc-macro2",
|
|
2034
2035
|
"quote",
|
|
2035
|
-
"syn",
|
|
2036
|
+
"syn 2.0.119",
|
|
2036
2037
|
]
|
|
2037
2038
|
|
|
2038
2039
|
[[package]]
|
|
@@ -2043,7 +2044,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
|
|
|
2043
2044
|
dependencies = [
|
|
2044
2045
|
"proc-macro2",
|
|
2045
2046
|
"quote",
|
|
2046
|
-
"syn",
|
|
2047
|
+
"syn 2.0.119",
|
|
2047
2048
|
]
|
|
2048
2049
|
|
|
2049
2050
|
[[package]]
|
|
@@ -2243,28 +2244,28 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
|
|
|
2243
2244
|
dependencies = [
|
|
2244
2245
|
"proc-macro2",
|
|
2245
2246
|
"quote",
|
|
2246
|
-
"syn",
|
|
2247
|
+
"syn 2.0.119",
|
|
2247
2248
|
"synstructure",
|
|
2248
2249
|
]
|
|
2249
2250
|
|
|
2250
2251
|
[[package]]
|
|
2251
2252
|
name = "zerocopy"
|
|
2252
|
-
version = "0.8.
|
|
2253
|
+
version = "0.8.55"
|
|
2253
2254
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2254
|
-
checksum = "
|
|
2255
|
+
checksum = "b5a105cd7b140f6eeec8acff2ea38135d3cab283ada58540f629fe51e46696eb"
|
|
2255
2256
|
dependencies = [
|
|
2256
2257
|
"zerocopy-derive",
|
|
2257
2258
|
]
|
|
2258
2259
|
|
|
2259
2260
|
[[package]]
|
|
2260
2261
|
name = "zerocopy-derive"
|
|
2261
|
-
version = "0.8.
|
|
2262
|
+
version = "0.8.55"
|
|
2262
2263
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2263
|
-
checksum = "
|
|
2264
|
+
checksum = "0fe976fb70c78cd64cccfe3a6fc142244e8a77b70959b30faf9d0ac37ee228eb"
|
|
2264
2265
|
dependencies = [
|
|
2265
2266
|
"proc-macro2",
|
|
2266
2267
|
"quote",
|
|
2267
|
-
"syn",
|
|
2268
|
+
"syn 2.0.119",
|
|
2268
2269
|
]
|
|
2269
2270
|
|
|
2270
2271
|
[[package]]
|
|
@@ -2284,7 +2285,7 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
|
|
|
2284
2285
|
dependencies = [
|
|
2285
2286
|
"proc-macro2",
|
|
2286
2287
|
"quote",
|
|
2287
|
-
"syn",
|
|
2288
|
+
"syn 2.0.119",
|
|
2288
2289
|
"synstructure",
|
|
2289
2290
|
]
|
|
2290
2291
|
|
|
@@ -2324,7 +2325,7 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
|
|
|
2324
2325
|
dependencies = [
|
|
2325
2326
|
"proc-macro2",
|
|
2326
2327
|
"quote",
|
|
2327
|
-
"syn",
|
|
2328
|
+
"syn 2.0.119",
|
|
2328
2329
|
]
|
|
2329
2330
|
|
|
2330
2331
|
[[package]]
|