Skip to content

Commit a0cf317

Browse files
fix serialization
1 parent c466996 commit a0cf317

File tree

3 files changed

+25
-14
lines changed

3 files changed

+25
-14
lines changed

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from datetime import timedelta
2-
from typing import Any, get_origin
2+
from typing import Any
33

4+
from common_library.pydantic_fields_extension import get_type
45
from pydantic import BaseModel, SecretStr
56
from pydantic_core import Url
67

@@ -20,14 +21,15 @@ def model_dump_with_secrets(
2021
data[field_name] = field_data.total_seconds()
2122

2223
elif isinstance(field_data, SecretStr):
23-
data[field_name] = field_data.get_secret_value() if show_secrets else str(field_data)
24-
24+
data[field_name] = (
25+
field_data.get_secret_value() if show_secrets else str(field_data)
26+
)
2527

2628
elif isinstance(field_data, Url):
2729
data[field_name] = str(field_data)
2830

2931
elif isinstance(field_data, dict):
30-
field_type = get_origin(settings_obj.model_fields[field_name].annotation)
32+
field_type = get_type(settings_obj.model_fields[field_name])
3133
if field_type and issubclass(field_type, BaseModel):
3234
data[field_name] = model_dump_with_secrets(
3335
field_type.model_validate(field_data),

packages/common-library/tests/test_serialization.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,31 @@
44

55

66
class Credentials(BaseModel):
7-
USERNAME: str | None = None
8-
PASSWORD: SecretStr | None = None
7+
username: str
8+
password: SecretStr
9+
10+
11+
class Access(BaseModel):
12+
credentials: Credentials
913

1014

1115
@pytest.mark.parametrize(
1216
"expected,show_secrets",
1317
[
1418
(
15-
{"USERNAME": "DeepThought", "PASSWORD": "42"},
19+
{"credentials": {"username": "DeepThought", "password": "42"}},
1620
True,
1721
),
1822
(
19-
{"USERNAME": "DeepThought", "PASSWORD": "**********"},
23+
{"credentials": {"username": "DeepThought", "password": "**********"}},
2024
False, # hide secrets
2125
),
2226
],
2327
)
2428
def test_model_dump_with_secrets(expected: dict, show_secrets: bool):
25-
assert expected == model_dump_with_secrets(Credentials(USERNAME="DeepThought", PASSWORD=SecretStr("42")), show_secrets=show_secrets)
29+
assert expected == model_dump_with_secrets(
30+
Access(
31+
credentials=Credentials(username="DeepThought", password=SecretStr("42"))
32+
),
33+
show_secrets=show_secrets,
34+
)

services/director-v2/tests/unit/test_modules_dask_clients_pool.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
from typing import Any, AsyncIterator, Callable, get_args
88
from unittest import mock
99

10-
from common_library.json_serialization import json_dumps
11-
from common_library.serialization import model_dump_with_secrets
1210
import pytest
1311
from _dask_helpers import DaskGatewayServer
12+
from common_library.json_serialization import json_dumps
13+
from common_library.serialization import model_dump_with_secrets
1414
from distributed.deploy.spec import SpecCluster
1515
from faker import Faker
1616
from models_library.clusters import (
@@ -26,7 +26,6 @@
2626
from pydantic import SecretStr
2727
from pytest_mock.plugin import MockerFixture
2828
from pytest_simcore.helpers.typing_env import EnvVarsDict
29-
from settings_library.utils_encoders import create_json_encoder_wo_secrets
3029
from simcore_postgres_database.models.clusters import ClusterType
3130
from simcore_service_director_v2.core.application import init_app
3231
from simcore_service_director_v2.core.errors import (
@@ -133,9 +132,10 @@ def creator():
133132
SimpleAuthentication(
134133
username=faker.user_name(),
135134
password=SecretStr(local_dask_gateway_server.password),
136-
), show_secrets=True
135+
),
136+
show_secrets=True,
137137
)
138-
)
138+
),
139139
)
140140

141141
return creator

0 commit comments

Comments
 (0)