Skip to content

Commit a1627d2

Browse files
author
Val Brodsky
committed
Convert field validator
1 parent 0667bd3 commit a1627d2

File tree

14 files changed

+58
-35
lines changed

14 files changed

+58
-35
lines changed

libs/labelbox/src/labelbox/data/annotation_types/data/tiled_image.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ class TiledBounds(BaseModel):
5454
epsg: EPSG
5555
bounds: List[Point]
5656

57-
@pydantic_compat.validator('bounds')
57+
@field_validator('bounds')
58+
@classmethod
5859
def validate_bounds_not_equal(cls, bounds):
5960
first_bound = bounds[0]
6061
second_bound = bounds[1]
@@ -99,7 +100,8 @@ class TileLayer(BaseModel):
99100
def asdict(self) -> Dict[str, str]:
100101
return {"tileLayerUrl": self.url, "name": self.name}
101102

102-
@pydantic_compat.validator('url')
103+
@field_validator('url')
104+
@classmethod
103105
def validate_url(cls, url):
104106
xyz_format = "/{z}/{x}/{y}"
105107
if xyz_format not in url:
@@ -344,7 +346,8 @@ def _validate_num_tiles(self, xstart: float, ystart: float, xend: float,
344346
f"Max allowed tiles are {max_tiles}"
345347
f"Increase max tiles or reduce zoom level.")
346348

347-
@pydantic_compat.validator('zoom_levels')
349+
@field_validator('zoom_levels')
350+
@classmethod
348351
def validate_zoom_levels(cls, zoom_levels):
349352
if zoom_levels[0] > zoom_levels[1]:
350353
raise ValueError(

libs/labelbox/src/labelbox/data/annotation_types/data/video.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from .base_data import BaseData
1313
from ..types import TypedArray
1414

15-
from pydantic import BaseModel, model_validator
15+
from pydantic import model_validator, field_validator
1616

1717
logger = logging.getLogger(__name__)
1818

libs/labelbox/src/labelbox/data/annotation_types/geometry/line.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from .point import Point
1010
from .geometry import Geometry
1111

12-
from pydantic import BaseModel
12+
from pydantic import field_validator
1313

1414

1515
class Line(Geometry):
@@ -65,7 +65,8 @@ def draw(self,
6565
color=color,
6666
thickness=thickness)
6767

68-
@pydantic_compat.validator('points')
68+
@field_validator('points')
69+
@classmethod
6970
def is_geom_valid(cls, points):
7071
if len(points) < 2:
7172
raise ValueError(

libs/labelbox/src/labelbox/data/annotation_types/geometry/mask.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from ..data import MaskData
99
from .geometry import Geometry
1010

11-
from pydantic import BaseModel
11+
from pydantic import field_validator
1212

1313

1414
class Mask(Geometry):
@@ -122,7 +122,8 @@ def create_url(self, signer: Callable[[bytes], str]) -> str:
122122
"""
123123
return self.mask.create_url(signer)
124124

125-
@pydantic_compat.validator('color')
125+
@field_validator('color')
126+
@classmethod
126127
def is_valid_color(cls, color):
127128
if isinstance(color, (tuple, list)):
128129
if len(color) == 1:

libs/labelbox/src/labelbox/data/annotation_types/geometry/polygon.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ def draw(self,
6868
return cv2.fillPoly(canvas, pts, color)
6969
return cv2.polylines(canvas, pts, True, color, thickness)
7070

71-
@pydantic_compat.validator('points')
71+
@field_validator('points')
72+
@classmethod
7273
def is_geom_valid(cls, points):
7374
if len(points) < 3:
7475
raise ValueError(

libs/labelbox/src/labelbox/data/annotation_types/label.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,11 +202,11 @@ def _assign_option(self, classification: ClassificationAnnotation,
202202
f"Unexpected type for answer found. {type(classification.value.answer)}"
203203
)
204204

205-
@pydantic_compat.validator("annotations", pre=True)
205+
@field_validator("annotations", mode='before')
206206
def validate_union(cls, value):
207207
supported = tuple([
208-
field.type_
209-
for field in cls.__fields__['annotations'].sub_fields[0].sub_fields
208+
field.type_ for field in
209+
cls.__model_fields__['annotations'].sub_fields[0].sub_fields
210210
])
211211
if not isinstance(value, list):
212212
raise TypeError(f"Annotations must be a list. Found {type(value)}")

libs/labelbox/src/labelbox/data/annotation_types/metrics/base.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from abc import ABC
22
from typing import Dict, Optional, Any, Union
33

4-
from pydantic import BaseModel
4+
from pydantic import BaseModel, field_validator
55

66
ConfidenceValue = pydantic_compat.confloat(ge=0, le=1)
77

@@ -19,7 +19,8 @@ def dict(self, *args, **kwargs):
1919
res = super().dict(*args, **kwargs)
2020
return {k: v for k, v in res.items() if v is not None}
2121

22-
@pydantic_compat.validator('value')
22+
@field_validator('value')
23+
@classmethod
2324
def validate_value(cls, value):
2425
if isinstance(value, Dict):
2526
if not (MIN_CONFIDENCE_SCORES <= len(value) <=

libs/labelbox/src/labelbox/data/annotation_types/metrics/scalar.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from dataclasses import field
12
from typing import Dict, Optional, Union
23
from enum import Enum
34

@@ -33,7 +34,8 @@ class ScalarMetric(BaseMetric):
3334
value: Union[ScalarMetricValue, ScalarMetricConfidenceValue]
3435
aggregation: ScalarMetricAggregation = ScalarMetricAggregation.ARITHMETIC_MEAN
3536

36-
@pydantic_compat.validator('metric_name')
37+
@field_validator('metric_name')
38+
@classmethod
3739
def validate_metric_name(cls, name: Union[str, None]):
3840
if name is None:
3941
return None

libs/labelbox/src/labelbox/data/annotation_types/ner/document_entity.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from pydantic import BaseModel
44

5-
from pydantic import BaseModel
5+
from pydantic import BaseModel, field_validator
66
from labelbox.utils import _CamelCaseMixin
77

88

@@ -11,7 +11,8 @@ class DocumentTextSelection(_CamelCaseMixin, BaseModel):
1111
group_id: str
1212
page: int
1313

14-
@pydantic_compat.validator("page")
14+
@field_validator("page")
15+
@classmethod
1516
def validate_page(cls, v):
1617
if v < 1:
1718
raise ValueError("Page must be greater than 1")

libs/labelbox/src/labelbox/data/annotation_types/video.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,8 @@ def validate_args(cls, values):
104104
raise ValueError("One of `instance_uri`, `im_bytes` required.")
105105
return values
106106

107-
@pydantic_compat.validator("instance_uri")
107+
@field_validator("instance_uri")
108+
@classmethod
108109
def validate_uri(cls, v):
109110
if not is_valid_uri(v):
110111
raise ValueError(f"{v} is not a valid uri")

0 commit comments

Comments
 (0)