Skip to content

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