Repository navigation
Commit 34906da
feat: Make YAML serialization deterministic
pydantic-yaml serializes model fields via model_dump_json() but set iteration
is order depends on hash randomization, which is randomized per interpreter
process, so `to_yaml_str()` produced a different ordering of these fields
on every run even when the underlying data was unchanged.
Add a `_CanonicalMixin` used by new `CanonicalModel`/`CanonicalRootModel`
base classes in schema.py. Each defines a single model_serializer(mode="wrap")
that inspects a model's actual field values at dump time and sorts any that
are a `set` into a list.1 parent 081c051 commit 34906da
4 files changed
Lines changed: 146 additions & 80 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
890 | 890 | | |
891 | 891 | | |
892 | 892 | | |
893 | | - | |
| 893 | + | |
894 | 894 | | |
895 | 895 | | |
896 | | - | |
897 | | - | |
| 896 | + | |
| 897 | + | |
898 | 898 | | |
899 | 899 | | |
900 | 900 | | |
| |||
1710 | 1710 | | |
1711 | 1711 | | |
1712 | 1712 | | |
1713 | | - | |
| 1713 | + | |
1714 | 1714 | | |
1715 | 1715 | | |
1716 | | - | |
1717 | | - | |
| 1716 | + | |
| 1717 | + | |
1718 | 1718 | | |
1719 | 1719 | | |
1720 | 1720 | | |
| |||
1876 | 1876 | | |
1877 | 1877 | | |
1878 | 1878 | | |
1879 | | - | |
| 1879 | + | |
1880 | 1880 | | |
1881 | 1881 | | |
1882 | 1882 | | |
| |||
2696 | 2696 | | |
2697 | 2697 | | |
2698 | 2698 | | |
2699 | | - | |
| 2699 | + | |
2700 | 2700 | | |
2701 | 2701 | | |
2702 | 2702 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
864 | 864 | | |
865 | 865 | | |
866 | 866 | | |
867 | | - | |
| 867 | + | |
868 | 868 | | |
869 | 869 | | |
870 | | - | |
871 | | - | |
| 870 | + | |
| 871 | + | |
872 | 872 | | |
873 | 873 | | |
874 | 874 | | |
| |||
1684 | 1684 | | |
1685 | 1685 | | |
1686 | 1686 | | |
1687 | | - | |
| 1687 | + | |
1688 | 1688 | | |
1689 | 1689 | | |
1690 | | - | |
1691 | | - | |
| 1690 | + | |
| 1691 | + | |
1692 | 1692 | | |
1693 | 1693 | | |
1694 | 1694 | | |
| |||
1850 | 1850 | | |
1851 | 1851 | | |
1852 | 1852 | | |
1853 | | - | |
| 1853 | + | |
1854 | 1854 | | |
1855 | 1855 | | |
1856 | 1856 | | |
| |||
2670 | 2670 | | |
2671 | 2671 | | |
2672 | 2672 | | |
2673 | | - | |
| 2673 | + | |
2674 | 2674 | | |
2675 | 2675 | | |
2676 | 2676 | | |
| |||
0 commit comments