jsoncompat 0.3.1

JSON Schema Compatibility Checker
Documentation
from __future__ import annotations

from demo.decorator import check_compatibility
import pydantic


@check_compatibility("simple_int", mode="serializer")
class X(pydantic.BaseModel):
    x: int


@check_compatibility("simple_str", mode="serializer")
class X2(pydantic.BaseModel):
    x: str


@check_compatibility("simple_optional_str", mode="deserializer")
class X3(pydantic.BaseModel):
    x: str | None = pydantic.Field(default=None, min_length=3)


@check_compatibility("several_fields", mode="both")
class X4(pydantic.BaseModel):
    x: str | None = pydantic.Field(default=None, min_length=3)
    y: int
    z: float | None = None
    name: str = pydantic.Field(default="default", max_length=20)
    active: bool = True
    tags: list[str] = pydantic.Field(default_factory=list)


@check_compatibility("recursive_node", mode="both")
class RecursiveNode(pydantic.BaseModel):
    value: int
    next: "RecursiveNode | None" = None


RecursiveNode.model_rebuild()