pydantic¶
Overview¶
The cookbook for pydantic
Code¶
What is inside the ValidationInfo¶
Migration v2 - Move from FieldInfo into ValidationInfo¶
=== pydantic v2.x.x
from pydantic import BaseModel, Field, field_validator
from pydantic import ValidationInfo
class Ticker(BaseModel):
exchange: str = ...
@field_validator("exchange")
@classmethod
def validate_exchange_name(cls, value, info: ValidationInfo):
assert isinstance(value, str), f"{info.field_name} required string instance."
if value not in ("HOSE", "HNX", "UPCOM"):
raise ValueError(f"Invalid value of {info.field_name}. Required in [\"HOSE\", \"HNX\", \"UPCOM\"]")
return value
=== pydantic v1.x.x
from pydantic import BaseModel, Field, validator
from pydantic.fields import ModelField
class Ticker(BaseModel):
exchange: str = ...
@validator("exchange")
def validate_exchange_name(cls, value, field: ModelField):
assert isinstance(value, str), f"{field.name} required string instance."
if value not in ("HOSE", "HNX", "UPCOM"):
raise ValueError(f"Invalid value of {field.name}. Required in [\"HOSE\", \"HNX\", \"UPCOM\"]")
return value