Skip to content

Commit 7463313

Browse files
committed
migration from parse_obj
1 parent adab4e8 commit 7463313

File tree

3 files changed

+32
-19
lines changed

3 files changed

+32
-19
lines changed

packages/models-library/tests/test_rest_ordering.py

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
import pytest
2+
from common_library.json_serialization import json_dumps
23
from models_library.basic_types import IDStr
34
from models_library.rest_ordering import (
45
OrderBy,
56
OrderDirection,
67
create_ordering_query_model_classes,
78
)
8-
from models_library.utils.json_serialization import json_dumps
9-
from pydantic import BaseModel, Extra, Field, Json, ValidationError, validator
9+
from pydantic import (
10+
BaseModel,
11+
ConfigDict,
12+
Field,
13+
Json,
14+
ValidationError,
15+
field_validator,
16+
)
1017

1118

1219
class ReferenceOrderQueryParamsClass(BaseModel):
@@ -18,10 +25,10 @@ class ReferenceOrderQueryParamsClass(BaseModel):
1825
order_by: Json[OrderBy] = Field(
1926
default=OrderBy(field=IDStr("modified_at"), direction=OrderDirection.DESC),
2027
description="Order by field (modified_at|name|description) and direction (asc|desc). The default sorting order is ascending.",
21-
example='{"field": "name", "direction": "desc"}',
28+
json_schema_extra={"examples": ['{"field": "name", "direction": "desc"}']},
2229
)
2330

24-
@validator("order_by", check_fields=False)
31+
@field_validator("order_by", check_fields=False)
2532
@classmethod
2633
def _validate_order_by_field(cls, v):
2734
if v.field not in {
@@ -35,8 +42,9 @@ def _validate_order_by_field(cls, v):
3542
v.field = "modified_column"
3643
return v
3744

38-
class Config:
39-
extra = Extra.forbid
45+
model_config = ConfigDict(
46+
extra="forbid",
47+
)
4048

4149

4250
def test_ordering_query_model_class_factory():
@@ -52,16 +60,19 @@ class OrderQueryParamsModel(BaseOrderingQueryModel):
5260

5361
# normal
5462
data = {"order_by": {"field": "modified_at", "direction": "asc"}}
55-
model = OrderQueryParamsModel.parse_obj(data)
63+
model = OrderQueryParamsModel.model_validate(data)
5664

5765
assert model.order_by
58-
assert model.order_by.dict() == {"field": "modified_column", "direction": "asc"}
66+
assert model.order_by.model_dump() == {
67+
"field": "modified_column",
68+
"direction": "asc",
69+
}
5970

6071
# test against reference
61-
expected = ReferenceOrderQueryParamsClass.parse_obj(
72+
expected = ReferenceOrderQueryParamsClass.model_validate(
6273
{"order_by": json_dumps({"field": "modified_at", "direction": "asc"})}
6374
)
64-
assert expected.dict() == model.dict()
75+
assert expected.model_dump() == model.model_dump()
6576

6677

6778
def test_ordering_query_model_class__fails_with_invalid_fields():
@@ -73,7 +84,7 @@ def test_ordering_query_model_class__fails_with_invalid_fields():
7384

7485
# fails with invalid field to sort
7586
with pytest.raises(ValidationError) as err_info:
76-
OrderQueryParamsModel.parse_obj({"order_by": {"field": "INVALID"}})
87+
OrderQueryParamsModel.model_validate({"order_by": {"field": "INVALID"}})
7788

7889
error = err_info.value.errors()[0]
7990

@@ -89,7 +100,7 @@ def test_ordering_query_model_class__fails_with_invalid_direction():
89100
)
90101

91102
with pytest.raises(ValidationError) as err_info:
92-
OrderQueryParamsModel.parse_obj(
103+
OrderQueryParamsModel.model_validate(
93104
{"order_by": {"field": "modified", "direction": "INVALID"}}
94105
)
95106

@@ -110,18 +121,19 @@ def test_ordering_query_model_class__defaults():
110121
# checks all defaults
111122
model = OrderQueryParamsModel()
112123
assert model.order_by
124+
assert isinstance(model.order_by, OrderBy) # nosec
113125
assert model.order_by.field == "modified_at" # NOTE that this was mapped!
114126
assert model.order_by.direction == OrderDirection.DESC
115127

116128
# partial defaults
117-
model = OrderQueryParamsModel.parse_obj({"order_by": {"field": "name"}})
129+
model = OrderQueryParamsModel.model_validate({"order_by": {"field": "name"}})
118130
assert model.order_by
119131
assert model.order_by.field == "name"
120-
assert model.order_by.direction == OrderBy.__fields__["direction"].default
132+
assert model.order_by.direction == OrderBy.model_fields["direction"].default
121133

122134
# direction alone is invalid
123135
with pytest.raises(ValidationError) as err_info:
124-
OrderQueryParamsModel.parse_obj({"order_by": {"direction": "asc"}})
136+
OrderQueryParamsModel.model_validate({"order_by": {"direction": "asc"}})
125137

126138
error = err_info.value.errors()[0]
127139
assert error["loc"] == ("order_by", "field")
@@ -135,5 +147,6 @@ def test_ordering_query_model_with_map():
135147
ordering_fields_api_to_column_map={"modified": "some_db_column_name"},
136148
)
137149

138-
model = OrderQueryParamsModel.parse_obj({"order_by": {"field": "modified"}})
150+
model = OrderQueryParamsModel.model_validate({"order_by": {"field": "modified"}})
151+
assert model.order_by
139152
assert model.order_by.field == "some_db_column_name"

services/web/server/tests/unit/with_dbs/03/resource_usage/test_usage_services__list.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
_SERVICE_RUN_GET = ServiceRunPage(
2828
items=[
29-
ServiceRunGet.parse_obj(
29+
ServiceRunGet.model_validate(
3030
{
3131
"service_run_id": "comp_1_5c2110be-441b-11ee-a0e8-02420a000040_1",
3232
"wallet_id": 1,

services/web/server/tests/unit/with_dbs/04/workspaces/test_workspaces.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@
2626
def test_workspaces_order_query_model_post_validator():
2727

2828
# on default
29-
query_params = WorkspacesListQueryParams.parse_obj({})
29+
query_params = WorkspacesListQueryParams.model_validate({})
3030
assert query_params.order_by
3131
assert query_params.order_by.field == "modified"
3232
assert query_params.order_by.direction == OrderDirection.DESC
3333

3434
# on partial default
35-
query_params = WorkspacesListQueryParams.parse_obj(
35+
query_params = WorkspacesListQueryParams.model_validate(
3636
{"order_by": {"field": "modified_at"}}
3737
)
3838
assert query_params.order_by

0 commit comments

Comments
 (0)