Skip to content

Commit 3af1779

Browse files
Merge branch 'pydantic_v2_migration_do_not_squash_updates' into is4481/cleanup-network-legacy
2 parents ae63578 + 0aea337 commit 3af1779

File tree

45 files changed

+250
-272
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+250
-272
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Makefile @pcrespov @sanderegg
1414
/ci/ @sanderegg @pcrespov
1515
/docs/ @pcrespov
1616
/packages/common-library/ @giancarloromeo
17-
/packages/models-library/ @sanderegg @pcrespov @matusdrobuliak66
17+
/packages/models-library/ @sanderegg @pcrespov @matusdrobuliak66 @giancarloromeo
1818
/packages/postgres-database/ @matusdrobuliak66
1919
/packages/pytest-simcore/ @pcrespov @sanderegg
2020
/packages/service-integration/ @pcrespov @sanderegg @GitHK

packages/common-library/src/common_library/errors_classes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def _get_full_class_name(cls) -> str:
4545
]
4646
return ".".join(reversed(relevant_classes))
4747

48-
def error_context(self):
48+
def error_context(self) -> dict[str, Any]:
4949
"""Returns context in which error occurred and stored within the exception"""
5050
return dict(**self.__dict__)
5151

packages/models-library/src/models_library/boot_options.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from pydantic import BaseModel, ConfigDict, ValidationInfo, field_validator
2-
from typing_extensions import TypedDict
2+
from typing_extensions import ( # https://docs.pydantic.dev/latest/api/standard_library_types/#typeddict
3+
TypedDict,
4+
)
35

46
from .basic_types import EnvVarKey
57

packages/models-library/src/models_library/projects_ui.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
from pydantic import BaseModel, ConfigDict, Field, field_validator
88
from pydantic_extra_types.color import Color
9-
from typing_extensions import TypedDict
9+
from typing_extensions import ( # https://docs.pydantic.dev/latest/api/standard_library_types/#typeddict
10+
TypedDict,
11+
)
1012

1113
from .projects_nodes_io import NodeID, NodeIDStr
1214
from .projects_nodes_ui import Marker, Position

packages/models-library/src/models_library/rest_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class RequestParameters(BaseModel):
88
"""
99

1010
def as_params(self, **export_options) -> dict[str, str]:
11-
data = self.dict(**export_options)
11+
data = self.model_dump(**export_options)
1212
return {k: f"{v}" for k, v in data.items()}
1313

1414

packages/models-library/src/models_library/rest_pagination_utils.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
from typing import Any, Protocol, runtime_checkable
33

44
from pydantic import AnyHttpUrl, TypeAdapter
5-
from typing_extensions import TypedDict
5+
from pydantic import TypeAdapter
6+
from typing_extensions import ( # https://docs.pydantic.dev/latest/api/standard_library_types/#typeddict
7+
TypedDict,
8+
)
69

710
from .rest_pagination import PageLinks, PageMetaInfoLimitOffset
811

packages/models-library/src/models_library/socketio.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
from typing import Any, TypedDict
1+
from typing import Any
2+
3+
from typing_extensions import ( # https://docs.pydantic.dev/latest/api/standard_library_types/#typeddict
4+
TypedDict,
5+
)
26

37

48
class SocketMessageDict(TypedDict):

packages/models-library/src/models_library/utils/common_validators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def parse_json_pre_validator(value: Any):
4848
return json_loads(value)
4949
except JSONDecodeError as err:
5050
msg = f"Invalid JSON {value=}: {err}"
51-
raise TypeError(msg) from err
51+
raise ValueError(msg) from err
5252
return value
5353

5454

packages/models-library/tests/test_rest_ordering.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,11 @@ def test_ordering_query_model_class__defaults():
120120

121121
# checks all defaults
122122
model = OrderQueryParamsModel()
123-
assert model.order_by
124-
assert isinstance(model.order_by, OrderBy) # nosec
125-
assert model.order_by.field == "modified_at" # NOTE that this was mapped!
126-
assert model.order_by.direction == OrderDirection.DESC
123+
assert model.order_by is not None
124+
assert (
125+
model.order_by.field == "modified_at" # pylint: disable=no-member
126+
) # NOTE that this was mapped!
127+
assert model.order_by.direction is OrderDirection.DESC # pylint: disable=no-member
127128

128129
# partial defaults
129130
model = OrderQueryParamsModel.model_validate({"order_by": {"field": "name"}})
@@ -150,3 +151,22 @@ def test_ordering_query_model_with_map():
150151
model = OrderQueryParamsModel.model_validate({"order_by": {"field": "modified"}})
151152
assert model.order_by
152153
assert model.order_by.field == "some_db_column_name"
154+
155+
156+
def test_ordering_query_parse_json_pre_validator():
157+
158+
OrderQueryParamsModel = create_ordering_query_model_classes(
159+
ordering_fields={"modified", "name"},
160+
default=OrderBy(field=IDStr("modified"), direction=OrderDirection.DESC),
161+
)
162+
163+
bad_json_value = ",invalid json"
164+
with pytest.raises(ValidationError) as err_info:
165+
OrderQueryParamsModel.model_validate({"order_by": bad_json_value})
166+
167+
exc = err_info.value
168+
assert exc.error_count() == 1
169+
error = exc.errors()[0]
170+
assert error["loc"] == ("order_by",)
171+
assert error["type"] == "value_error"
172+
assert error["input"] == bad_json_value

packages/postgres-database/src/simcore_postgres_database/models/products.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
import sqlalchemy as sa
1212
from sqlalchemy.dialects.postgresql import JSONB
1313
from sqlalchemy.sql import func
14-
from typing_extensions import TypedDict
14+
from typing_extensions import ( # https://docs.pydantic.dev/latest/api/standard_library_types/#typeddict
15+
TypedDict,
16+
)
1517

1618
from .base import metadata
1719
from .groups import groups

0 commit comments

Comments
 (0)