Skip to content

Commit 463488b

Browse files
GitHKAndrei Neagu
authored andcommitted
🎨 pydantic2 migration: fixed unit-tests for dynamic-scheduler (#6547)
Co-authored-by: Andrei Neagu <[email protected]>
1 parent e97258e commit 463488b

File tree

27 files changed

+370
-219
lines changed

27 files changed

+370
-219
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
from pydantic import TypeAdapter, field_validator
66

77

8-
def timedelta_try_convert_str_to_float(field: str):
8+
def validate_numeric_string_as_timedelta(field: str):
99
"""Transforms a float/int number into a valid datetime as it used to work in the past"""
1010

11-
def _try_convert_str_to_float_or_return(
11+
def _numeric_string_as_timedelta(
1212
v: datetime.timedelta | str | float,
1313
) -> datetime.timedelta | str | float:
1414
if isinstance(v, str):
@@ -32,4 +32,4 @@ def _try_convert_str_to_float_or_return(
3232
return v
3333
return v
3434

35-
return field_validator(field, mode="before")(_try_convert_str_to_float_or_return)
35+
return field_validator(field, mode="before")(_numeric_string_as_timedelta)

packages/common-library/tests/test_pydantic_validators.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from datetime import timedelta
22

33
import pytest
4-
from common_library.pydantic_validators import timedelta_try_convert_str_to_float
4+
from common_library.pydantic_validators import validate_numeric_string_as_timedelta
55
from faker import Faker
66
from pydantic import Field
77
from pydantic_settings import BaseSettings, SettingsConfigDict
@@ -15,7 +15,7 @@ class Settings(BaseSettings):
1515
APP_NAME: str
1616
REQUEST_TIMEOUT: timedelta = Field(default=timedelta(seconds=40))
1717

18-
_try_convert_request_timeout = timedelta_try_convert_str_to_float(
18+
_validate_request_timeout = validate_numeric_string_as_timedelta(
1919
"REQUEST_TIMEOUT"
2020
)
2121

packages/models-library/src/models_library/api_schemas_webserver/projects_nodes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ class NodeGet(OutputSchema):
105105
"service_basepath": "/x/E1O2E-LAH",
106106
"service_state": "pending",
107107
"service_message": "no suitable node (insufficient resources on 1 node)",
108-
"user_id": 123,
108+
"user_id": "123",
109109
},
110110
# dynamic
111111
{
@@ -119,7 +119,7 @@ class NodeGet(OutputSchema):
119119
"service_basepath": "/x/E1O2E-LAH",
120120
"service_state": "pending",
121121
"service_message": "no suitable node (insufficient resources on 1 node)",
122-
"user_id": 123,
122+
"user_id": "123",
123123
},
124124
]
125125
}

packages/service-library/src/servicelib/fastapi/exceptions_utils.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515

1616

1717
async def http_exception_as_json_response(
18-
request: Request, exc: HTTPException
18+
request: Request, exc: Exception
1919
) -> JSONResponse:
20+
assert isinstance(exc, HTTPException) # nosec
2021
assert request # nosec
22+
2123
error = DefaultApiError.from_status_code(exc.status_code)
2224

2325
error_detail = error.detail or ""

services/agent/src/simcore_service_agent/core/settings.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from datetime import timedelta
22

3-
from common_library.pydantic_validators import timedelta_try_convert_str_to_float
3+
from common_library.pydantic_validators import validate_numeric_string_as_timedelta
44
from models_library.basic_types import BootModeEnum, LogLevel
55
from pydantic import AliasChoices, AnyHttpUrl, Field, field_validator
66
from settings_library.base import BaseCustomSettings
@@ -78,17 +78,17 @@ class ApplicationSettings(BaseCustomSettings, MixinLoggingSettings):
7878
json_schema_extra={"auto_default_from_env": True},
7979
)
8080

81-
_try_convert_agent_volumes_cleanup_interval = timedelta_try_convert_str_to_float(
81+
_validate_agent_volumes_cleanup_interval = validate_numeric_string_as_timedelta(
8282
"AGENT_VOLUMES_CLEANUP_INTERVAL"
8383
)
8484

85-
_try_convert_agent_volumes_cleanup_book_keeping_interval = (
86-
timedelta_try_convert_str_to_float(
85+
_validate_agent_volumes_cleanup_book_keeping_interval = (
86+
validate_numeric_string_as_timedelta(
8787
"AGENT_VOLUMES_CLEANUP_BOOK_KEEPING_INTERVAL"
8888
)
8989
)
90-
_try_convert_agent_volumes_cleanup_remove_volumes_inactive_for = (
91-
timedelta_try_convert_str_to_float(
90+
_validate_agent_volumes_cleanup_remove_volumes_inactive_for = (
91+
validate_numeric_string_as_timedelta(
9292
"AGENT_VOLUMES_CLEANUP_REMOVE_VOLUMES_INACTIVE_FOR"
9393
)
9494
)

services/director-v2/src/simcore_service_director_v2/core/dynamic_services_settings/scheduler.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from datetime import timedelta
22
from typing import Final
33

4-
from common_library.pydantic_validators import timedelta_try_convert_str_to_float
4+
from common_library.pydantic_validators import validate_numeric_string_as_timedelta
55
from models_library.projects_networks import DockerNetworkName
66
from pydantic import Field, NonNegativeInt, PositiveFloat
77
from settings_library.base import BaseCustomSettings
@@ -168,11 +168,11 @@ class DynamicServicesSchedulerSettings(BaseCustomSettings):
168168
timedelta(0), description="time to sleep before removing a container"
169169
)
170170

171-
_try_convert_director_v2_dynamic_scheduler_interval = (
172-
timedelta_try_convert_str_to_float("DIRECTOR_V2_DYNAMIC_SCHEDULER_INTERVAL")
171+
_validate_director_v2_dynamic_scheduler_interval = (
172+
validate_numeric_string_as_timedelta("DIRECTOR_V2_DYNAMIC_SCHEDULER_INTERVAL")
173173
)
174-
_try_convert_director_v2_dynamic_sidecar_sleep_after_container_removal = (
175-
timedelta_try_convert_str_to_float(
174+
_validate_director_v2_dynamic_sidecar_sleep_after_container_removal = (
175+
validate_numeric_string_as_timedelta(
176176
"DIRECTOR_V2_DYNAMIC_SIDECAR_SLEEP_AFTER_CONTAINER_REMOVAL"
177177
)
178178
)

services/director-v2/src/simcore_service_director_v2/core/settings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import datetime
66
from functools import cached_property
77

8-
from common_library.pydantic_validators import timedelta_try_convert_str_to_float
8+
from common_library.pydantic_validators import validate_numeric_string_as_timedelta
99
from models_library.basic_types import (
1010
BootModeEnum,
1111
BuildTargetEnum,
@@ -236,6 +236,6 @@ def _validate_loglevel(cls, value: str) -> str:
236236
log_level: str = cls.validate_log_level(value)
237237
return log_level
238238

239-
_try_convert_service_tracking_heartbeat = timedelta_try_convert_str_to_float(
239+
_validate_service_tracking_heartbeat = validate_numeric_string_as_timedelta(
240240
"SERVICE_TRACKING_HEARTBEAT"
241241
)

0 commit comments

Comments
 (0)