Skip to content

Commit 2ae8b7c

Browse files
author
Val Brodsky
committed
Convert config
1 parent 5337113 commit 2ae8b7c

29 files changed

+105
-110
lines changed

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from PIL import Image
1313
from pyproj import Transformer
1414
from pygeotile.point import Point as PygeoPoint
15-
from pydantic import BaseModel, model_validator, field_validator
15+
from pydantic import BaseModel, model_validator, field_validator, ConfigDict
1616

1717
from labelbox.data.annotation_types import Rectangle, Point, Line, Polygon
1818
from .base_data import BaseData
@@ -361,8 +361,7 @@ class EPSGTransformer(BaseModel):
361361
in different formats.
362362
"""
363363

364-
class Config:
365-
arbitrary_types_allowed = True
364+
model_config = ConfigDict(arbitrary_types_allowed=True)
366365

367366
transformer: Any
368367

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

Lines changed: 2 additions & 4 deletions
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 model_validator, field_validator
15+
from pydantic import model_validator, ConfigDict, Extra
1616

1717
logger = logging.getLogger(__name__)
1818

@@ -168,6 +168,4 @@ def __repr__(self) -> str:
168168
f"frames={'...' if self.frames is not None else None}," \
169169
f"url={self.url})"
170170

171-
class Config:
172-
# Required for discriminating between data types
173-
extra = 'forbid'
171+
model_config = ConfigDict(extra=Extra.forbid,)

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@ def validate_data(cls, label):
5959
if isinstance(label.get("data"), Dict):
6060
label["data"]["class_name"] = "GenericDataRowData"
6161
else:
62-
warnings.warn(
63-
f"Using {type(label['data']).__name__} class for label.data is deprecated. "
64-
"Use a dict or an instance of GenericDataRowData instead.")
62+
if not isinstance(label.get("data"), GenericDataRowData):
63+
warnings.warn(
64+
f"Using {type(label['data']).__name__} class for label.data is deprecated. "
65+
"Use a dict or an instance of GenericDataRowData instead.")
6566
return label
6667

6768
def object_annotations(self) -> List[ObjectAnnotation]:

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

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

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

66
ConfidenceValue = Annotated[float, Field(ge=0, le=1)]
77

@@ -25,12 +25,11 @@ def validate_value(cls, value):
2525
if isinstance(value, Dict):
2626
if not (MIN_CONFIDENCE_SCORES <= len(value) <=
2727
MAX_CONFIDENCE_SCORES):
28-
raise pydantic_compat.ValidationError([
29-
pydantic_compat.ErrorWrapper(ValueError(
28+
raise ValidationError([
29+
ValueError(
3030
"Number of confidence scores must be greater"
3131
f" than or equal to {MIN_CONFIDENCE_SCORES} and"
3232
f" less than or equal to {MAX_CONFIDENCE_SCORES}. Found {len(value)}"
3333
),
34-
loc='value')
3534
], cls)
3635
return value

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
from packaging import version
66
import numpy as np
77

8-
from pydantic import ValidationInfo
9-
from labelbox import pydantic_compat
8+
from pydantic import ValidationInfo, Field
109

11-
Cuid = Annotated[str, pydantic_compat.Field(min_length=25, max_length=25)]
10+
Cuid = Annotated[str, Field(min_length=25, max_length=25)]
1211

1312
DType = TypeVar('DType')
1413
DShape = TypeVar('DShape')

libs/labelbox/src/labelbox/data/serialization/labelbox_v1/feature.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Optional
22

3-
from pydantic import BaseModel, model_validator
3+
from pydantic import BaseModel, model_validator, ConfigDict
44

55
from labelbox.utils import camel_case
66
from ...annotation_types.types import Cuid
@@ -27,6 +27,5 @@ def dict(self, *args, **kwargs):
2727
res.pop('keyframe')
2828
return res
2929

30-
class Config:
31-
populate_by_name = True
32-
alias_generator = camel_case
30+
model_config = ConfigDict(allow_population_by_field_name=True,
31+
alias_generator=camel_case)

libs/labelbox/src/labelbox/data/serialization/labelbox_v1/label.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
from pyexpat import model
12
from labelbox.data.annotation_types.data.tiled_image import TiledImageData
23
from labelbox.utils import camel_case
34
from typing import List, Optional, Union, Dict, Any
45

5-
from pydantic import BaseModel, Field
6+
from pydantic import BaseModel, ConfigDict, Field
67

78
from ...annotation_types.annotation import (ClassificationAnnotation,
89
ObjectAnnotation)
@@ -100,8 +101,7 @@ def from_common(
100101

101102
return result
102103

103-
class Config:
104-
populate_by_name = True
104+
model_config = ConfigDict(allow_population_by_field_name=True)
105105

106106

107107
class Review(BaseModel):
@@ -111,8 +111,7 @@ class Review(BaseModel):
111111
created_by: str
112112
label_id: Optional[str] = None
113113

114-
class Config:
115-
alias_generator = camel_case
114+
model_config = ConfigDict(alias_generator=camel_case)
116115

117116

118117
Extra = lambda name: Field(None, alias=name, extra_field=True)
@@ -245,5 +244,4 @@ def _is_url(self) -> bool:
245244
("http://", "https://", "gs://",
246245
"s3://")) or "tileLayerUrl" in self.row_data
247246

248-
class Config:
249-
populate_by_name = True
247+
model_config = ConfigDict(allow_population_by_field_name=True)

libs/labelbox/src/labelbox/data/serialization/ndjson/classification.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Any, Dict, List, Union, Optional
22

3-
from pydantic import BaseModel, model_validator, Field
3+
from pydantic import BaseModel, ConfigDict, model_validator, Field
44
from labelbox.data.mixins import ConfidenceMixin, CustomMetric, CustomMetricsMixin
55
from labelbox.data.serialization.ndjson.base import DataRow, NDAnnotation
66

@@ -39,9 +39,8 @@ def dict(self, *args, **kwargs):
3939
]
4040
return res
4141

42-
class Config:
43-
populate_by_name = True
44-
alias_generator = camel_case
42+
model_config = ConfigDict(allow_population_by_field_name=True,
43+
alias_generator=camel_case)
4544

4645

4746
class FrameLocation(BaseModel):

libs/labelbox/src/labelbox/data/serialization/ndjson/metric.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from typing import Optional, Union, Type
22

3+
from pydantic import ConfigDict
4+
35
from labelbox.data.annotation_types.data import ImageData, TextData
46
from labelbox.data.serialization.ndjson.base import DataRow, NDJsonBase
57
from labelbox.data.annotation_types.metrics.scalar import (
@@ -15,8 +17,7 @@ class BaseNDMetric(NDJsonBase):
1517
feature_name: Optional[str] = None
1618
subclass_name: Optional[str] = None
1719

18-
class Config:
19-
use_enum_values = True
20+
model_config = ConfigDict(use_enum_values=True)
2021

2122
def dict(self, *args, **kwargs):
2223
res = super().dict(*args, **kwargs)

libs/labelbox/src/labelbox/schema/bulk_import_request.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from google.api_core import retry
99
from labelbox import parser
1010
import requests
11-
from pydantic import BaseModel, model_validator, StringConstraints, Field as PydanticField, field_validator
11+
from pydantic import BaseModel, model_validator, StringConstraints, Field as PydanticField, field_validator, ValidationError, Extra, ConfigDict
1212
from typing_extensions import Literal
1313
from typing import (Any, List, Optional, BinaryIO, Dict, Iterable, Tuple, Union,
1414
Type, Set, TYPE_CHECKING, Annotated)
@@ -428,8 +428,7 @@ def _validate_ndjson(lines: Iterable[Dict[str, Any]],
428428
f'{uuid} already used in this import job, '
429429
'must be unique for the project.')
430430
uids.add(uuid)
431-
except (pydantic_compat.ValidationError, ValueError, TypeError,
432-
KeyError) as e:
431+
except (ValidationError, ValueError, TypeError, KeyError) as e:
433432
raise lb_exceptions.MALValidationError(
434433
f"Invalid NDJson on line {idx}") from e
435434

@@ -528,7 +527,7 @@ class VideoSupported(BaseModel):
528527

529528

530529
#Base class for a special kind of union.
531-
# Compatible with pydantic_compat. Improves error messages over a traditional union
530+
# Improves error messages over a traditional union
532531
class SpecialUnion:
533532

534533
def __new__(cls, **kwargs):
@@ -561,7 +560,7 @@ def build(cls: Any, data: Union[dict, BaseModel]) -> "NDBase":
561560
data (Union[dict, BaseModel]) : The data for constructing one of the objects in the union
562561
raises:
563562
KeyError: data does not contain the determinant fields for any of the types supported by this SpecialUnion
564-
pydantic_compat.ValidationError: Error while trying to construct a specific object in the union
563+
ValidationError: Error while trying to construct a specific object in the union
565564
566565
"""
567566
if isinstance(data, BaseModel):
@@ -659,9 +658,7 @@ def validate_instance(self, valid_feature_schemas_by_id,
659658
self.validate_feature_schemas(valid_feature_schemas_by_id,
660659
valid_feature_schemas_by_name)
661660

662-
class Config:
663-
#Users shouldn't to add extra data to the payload
664-
extra = 'forbid'
661+
model_config = ConfigDict(extra=Extra.forbid,)
665662

666663
@staticmethod
667664
def determinants(parent_cls) -> List[str]:

0 commit comments

Comments
 (0)