Add a pydantic model_validator to BoundingBoxField to check the validity of the coords.

This commit is contained in:
Ryan Dick 2024-08-01 14:00:57 -04:00
parent c6d49e8b1f
commit 44b21f10f1

View File

@ -1,7 +1,7 @@
from enum import Enum from enum import Enum
from typing import Any, Callable, Optional, Tuple from typing import Any, Callable, Optional, Tuple
from pydantic import BaseModel, ConfigDict, Field, RootModel, TypeAdapter from pydantic import BaseModel, ConfigDict, Field, RootModel, TypeAdapter, model_validator
from pydantic.fields import _Unset from pydantic.fields import _Unset
from pydantic_core import PydanticUndefined from pydantic_core import PydanticUndefined
@ -258,6 +258,14 @@ class BoundingBoxField(BaseModel):
"when the bounding box was produced by a detector and has an associated confidence score.", "when the bounding box was produced by a detector and has an associated confidence score.",
) )
@model_validator(mode="after")
def check_coords(self):
if self.x_min > self.x_max:
raise ValueError(f"x_min ({self.x_min}) is greater than x_max ({self.x_max}).")
if self.y_min > self.y_max:
raise ValueError(f"y_min ({self.y_min}) is greater than y_max ({self.y_max}).")
return self
class MetadataField(RootModel[dict[str, Any]]): class MetadataField(RootModel[dict[str, Any]]):
""" """