Как удалить значение дискриминатора из loc при ошибке проверки?Python

Программы на Python
Anonymous
Как удалить значение дискриминатора из loc при ошибке проверки?

Сообщение Anonymous »

Я использую Pydantic v2. На данный момент я хотел бы удалить значение дискриминатора из loc или ошибку проверки. Пожалуйста, взгляните на код ниже:
from pprint import pprint
from typing import Literal, Union, Annotated, Any

from pydantic import BaseModel, Field, RootModel, ValidationError
from pydantic.main import Model

class Tiger(BaseModel):
animal_type: Literal["tiger"] = "tiger"
ferocity_scale: float = Field(..., ge=0, le=10)

class Shark(BaseModel):
animal_type: Literal["shark"] = "shark"
ferocity_scale: float = Field(..., ge=0, le=10)

class Lion(BaseModel):
animal_type: Literal["lion"] = "lion"
ferocity_scale: float

class WildAnimal(RootModel):
root: Annotated[Union[Tiger, Shark, Lion], Field(..., discriminator='animal_type')]

try:
my_shark = WildAnimal.model_validate({'animal_type': 'shark', 'ferocity_scale': 115})
except ValidationError as exc:
pprint(exc.errors())

Код выводит:
[{'ctx': {'le': 10.0},
'input': 115,
'loc': ('shark', 'ferocity_scale'), Model:
try:
return super().model_validate(obj, strict=strict, from_attributes=from_attributes, context=context)
except ValidationError as exc:
# modify loc
# reraise ValidationError


Подробнее здесь: https://stackoverflow.com/questions/790 ... tion-error

Вернуться в «Python»