Say I have the following Pydantic 2.10.6 model, where x is dynamically calculated from another field, y: from pydantic import BaseModel, Field, field_validator, ValidationInfo class Foo(BaseModel): x: int = Field(init=False) y: int @field_validator("x", mode="before") @staticmethod def set_x(val: None, info: ValidationInfo): return info.data["y"] + 1 Foo(y=1) Running this as is fails validation: pydantic_core._pydantic_core.ValidationError: 1 validation error for Foo x Field required [type=missing, input_value={'y': 1}, input_type=dict] I can "fix" the runtime error by giving x a default: x: int = Field(init=False, default=None) But then this fails type checking in pyright with: Type "None" is not assignable to declared type "int" I can also fix it using a model_validator, but this is a tad less neat: from pydantic import BaseModel, Field, model_validator class Foo(BaseModel): x: int = Field(init=False) y: int @model_validator(mode="before") @staticmethod def set_x(data: dict): data["x"] = data["y"] + 1 return data Foo(y=1) How can I cleanly represent this model using only a field validator? Continue reading...