Как заставить pydantic вызывать ValidationError, если базовая модель получает неожиданный аргумент

#python #python-3.x #pydantic

#python #python-3.x #pydantic

Вопрос:

Я использую pydantic для проверки формата файла параметров. Если в имени параметра есть опечатка, я хочу, чтобы pydantic выдавал ошибку, но этого не происходит.

Например, следующее не вызывает никакой ошибки:

 from typing import Optional
from pydantic import BaseModel

class Param(BaseModel):
    param1: int
    param2: Optional[str] = None

p = Param(param1=2, parram2=9)

  

Но parram2 не определено в моей базовой модели (из-за опечатки), поэтому я бы хотел, чтобы pydantic выдал ошибку.

Есть идеи, как мне поступить?

Редактировать: я нашел решение, используя dataclass вместо BaseModel, но dataclass, похоже, не работает с FastAPI, поэтому я не могу использовать dataclass

Ответ №1:

Я нашел решение:

 from typing import Optional
from pydantic import BaseModel
 

class Param(BaseModel):
    param1: int
    param2: Optional[str] = None

    class Config:
        extra = 'forbid'

p = Param(param1=2, param2=9)
  

Приведенное выше теперь вызывает ошибку