Skip to content

Commit 64a8a70

Browse files
committed
migrated
1 parent 32f043a commit 64a8a70

File tree

9 files changed

+37
-29
lines changed

9 files changed

+37
-29
lines changed

services/datcore-adapter/src/simcore_service_datcore_adapter/_meta.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
from typing import Final
77

88
from models_library.basic_types import VersionStr
9-
from pydantic import parse_obj_as
9+
from pydantic import TypeAdapter
1010

1111
current_distribution = distribution("simcore_service_datcore_adapter")
1212
__version__ = version("simcore_service_datcore_adapter")
1313

14-
API_VERSION: Final[VersionStr] = parse_obj_as(VersionStr, __version__)
14+
API_VERSION: Final[VersionStr] = TypeAdapter(VersionStr).validate_python(__version__)
1515
MAJOR, MINOR, PATCH = __version__.split(".")
1616
API_VTAG: Final[str] = f"v{MAJOR}"
1717
APP_NAME: Final[str] = current_distribution.metadata["Name"]

services/datcore-adapter/src/simcore_service_datcore_adapter/api/routes/files.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from typing import Annotated, Any
33

44
from fastapi import APIRouter, Depends, Header, Request
5-
from pydantic import AnyUrl, parse_obj_as
5+
from pydantic import AnyUrl, TypeAdapter
66
from servicelib.fastapi.requests_decorators import cancel_on_disconnect
77
from starlette import status
88

@@ -34,7 +34,9 @@ async def download_file(
3434
api_secret=x_datcore_api_secret,
3535
package_id=file_id,
3636
)
37-
return FileDownloadOut(link=parse_obj_as(AnyUrl, f"{presigned_download_link}"))
37+
return FileDownloadOut(
38+
link=TypeAdapter(AnyUrl).validate_python(f"{presigned_download_link}")
39+
)
3840

3941

4042
@router.delete(

services/datcore-adapter/src/simcore_service_datcore_adapter/core/application.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:
5050

5151
for name in NOISY_LOGGERS:
5252
logging.getLogger(name).setLevel(quiet_level)
53-
logger.debug("App settings:\n%s", settings.json(indent=2))
53+
logger.debug("App settings:\n%s", settings.model_dump_json(indent=2))
5454

5555
app = FastAPI(
5656
debug=settings.debug,

services/datcore-adapter/src/simcore_service_datcore_adapter/core/settings.py

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

33
from models_library.basic_types import BootModeEnum, LogLevel
4-
from pydantic import AliasChoices, Field, field_validator, parse_obj_as
4+
from pydantic import AliasChoices, Field, TypeAdapter, field_validator
55
from pydantic.networks import AnyUrl
66
from settings_library.base import BaseCustomSettings
77
from settings_library.tracing import TracingSettings
@@ -11,7 +11,9 @@
1111
class PennsieveSettings(BaseCustomSettings):
1212
PENNSIEVE_ENABLED: bool = True
1313

14-
PENNSIEVE_API_URL: AnyUrl = parse_obj_as(AnyUrl, "https://api.pennsieve.io")
14+
PENNSIEVE_API_URL: AnyUrl = TypeAdapter(AnyUrl).validate_python(
15+
"https://api.pennsieve.io"
16+
)
1517
PENNSIEVE_API_GENERAL_TIMEOUT: float = 20.0
1618
PENNSIEVE_HEALTCHCHECK_TIMEOUT: float = 1.0
1719

services/datcore-adapter/src/simcore_service_datcore_adapter/models/schemas/datasets.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,16 @@ def from_pennsieve_package(
4545
return cls(
4646
dataset_id=package["content"]["datasetNodeId"],
4747
package_id=package["content"]["nodeId"],
48-
id=package["content"]["id"],
48+
id=f"{package['content']['id']}",
4949
name=pck_name,
5050
path=base_path / pck_name,
5151
type=package["content"]["packageType"],
5252
size=file_size,
5353
created_at=package["content"]["createdAt"],
5454
last_modified_at=package["content"]["updatedAt"],
55-
data_type=DataType.FOLDER
56-
if package["content"]["packageType"] == "Collection"
57-
else DataType.FILE,
55+
data_type=(
56+
DataType.FOLDER
57+
if package["content"]["packageType"] == "Collection"
58+
else DataType.FILE
59+
),
5860
)

services/datcore-adapter/tests/unit/conftest.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
# pylint:disable=redefined-outer-name
44

55
import json
6+
from collections.abc import AsyncIterator, Callable
67
from pathlib import Path
7-
from typing import Any, AsyncIterator, Callable
8+
from typing import Any
89
from uuid import uuid4
910

1011
import faker
@@ -14,7 +15,9 @@
1415
import simcore_service_datcore_adapter
1516
from asgi_lifespan import LifespanManager
1617
from fastapi.applications import FastAPI
18+
from models_library.basic_types import BootModeEnum
1719
from pytest_mock import MockFixture
20+
from pytest_simcore.helpers.monkeypatch_envs import setenvs_from_dict
1821
from simcore_service_datcore_adapter.modules.pennsieve import (
1922
PennsieveAuthorizationHeaders,
2023
)
@@ -61,7 +64,9 @@ def pennsieve_mock_dataset_packages(mocks_dir: Path) -> dict[str, Any]:
6164

6265

6366
@pytest.fixture()
64-
def minimal_app() -> FastAPI:
67+
def minimal_app(
68+
app_envs: None,
69+
) -> FastAPI:
6570
from simcore_service_datcore_adapter.main import the_app
6671

6772
return the_app
@@ -76,7 +81,7 @@ def client(minimal_app: FastAPI) -> TestClient:
7681
@pytest.fixture
7782
def app_envs(monkeypatch: pytest.MonkeyPatch):
7883
# disable tracing as together with LifespanManager, it does not remove itself nicely
79-
...
84+
return setenvs_from_dict(monkeypatch, {"SC_BOOT_MODE": BootModeEnum.DEBUG})
8085

8186

8287
@pytest.fixture()
@@ -87,7 +92,7 @@ async def initialized_app(
8792
yield minimal_app
8893

8994

90-
@pytest.fixture(scope="function")
95+
@pytest.fixture
9196
async def async_client(initialized_app: FastAPI) -> AsyncIterator[httpx.AsyncClient]:
9297
async with httpx.AsyncClient(
9398
app=initialized_app,
@@ -215,14 +220,13 @@ def pennsieve_api_headers(
215220
def pennsieve_random_fake_datasets(
216221
create_pennsieve_fake_dataset_id: Callable,
217222
) -> dict[str, Any]:
218-
datasets = {
223+
return {
219224
"datasets": [
220225
{"content": {"id": create_pennsieve_fake_dataset_id(), "name": fake.text()}}
221226
for _ in range(10)
222227
],
223228
"totalCount": 20,
224229
}
225-
return datasets
226230

227231

228232
@pytest.fixture

services/datcore-adapter/tests/unit/test_route_datasets.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@
33
# pylint:disable=redefined-outer-name
44

55

6-
from typing import Optional
7-
86
import httpx
97
import respx
108
from fastapi_pagination import Page
11-
from pydantic import parse_obj_as
9+
from pydantic import TypeAdapter
1210
from simcore_service_datcore_adapter.models.schemas.datasets import (
1311
DatasetMetaData,
1412
FileMetaData,
@@ -18,7 +16,7 @@
1816

1917
async def test_list_datasets_entrypoint(
2018
async_client: httpx.AsyncClient,
21-
pennsieve_subsystem_mock: Optional[respx.MockRouter],
19+
pennsieve_subsystem_mock: respx.MockRouter | None,
2220
pennsieve_api_headers: dict[str, str],
2321
):
2422
response = await async_client.get(
@@ -29,7 +27,7 @@ async def test_list_datasets_entrypoint(
2927
assert response.status_code == status.HTTP_200_OK
3028
data = response.json()
3129
assert data
32-
parse_obj_as(Page[DatasetMetaData], data)
30+
TypeAdapter(Page[DatasetMetaData]).validate_python(data)
3331

3432

3533
async def test_list_dataset_files_legacy_entrypoint(
@@ -47,7 +45,7 @@ async def test_list_dataset_files_legacy_entrypoint(
4745
assert response.status_code == status.HTTP_200_OK
4846
data = response.json()
4947
assert data
50-
parse_obj_as(list[FileMetaData], data)
48+
TypeAdapter(list[FileMetaData]).validate_python(data)
5149

5250

5351
async def test_list_dataset_top_level_files_entrypoint(
@@ -65,7 +63,7 @@ async def test_list_dataset_top_level_files_entrypoint(
6563
assert response.status_code == status.HTTP_200_OK
6664
data = response.json()
6765
assert data
68-
parse_obj_as(Page[FileMetaData], data)
66+
TypeAdapter(Page[FileMetaData]).validate_python(data)
6967

7068

7169
async def test_list_dataset_collection_files_entrypoint(
@@ -85,4 +83,4 @@ async def test_list_dataset_collection_files_entrypoint(
8583
assert response.status_code == status.HTTP_200_OK
8684
data = response.json()
8785
assert data
88-
parse_obj_as(Page[FileMetaData], data)
86+
TypeAdapter(Page[FileMetaData]).validate_python(data)

services/datcore-adapter/tests/unit/test_route_files.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from unittest.mock import Mock
66

77
import httpx
8-
from pydantic import parse_obj_as
8+
from pydantic import TypeAdapter
99
from simcore_service_datcore_adapter.models.domains.files import FileDownloadOut
1010
from starlette import status
1111

@@ -23,7 +23,7 @@ async def test_download_file_entrypoint(
2323
assert response.status_code == status.HTTP_200_OK
2424
data = response.json()
2525
assert data
26-
parse_obj_as(FileDownloadOut, data)
26+
TypeAdapter(FileDownloadOut).validate_python(data)
2727

2828

2929
async def test_delete_file_entrypoint(

services/datcore-adapter/tests/unit/test_route_health.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ async def test_check_subsystem_health(async_client: httpx.AsyncClient):
3131

3232
assert pennsieve_health_route.called
3333
assert response.status_code == status.HTTP_200_OK
34-
app_status = AppStatusCheck.parse_obj(response.json())
34+
app_status = AppStatusCheck.model_validate(response.json())
3535
assert app_status
3636
assert app_status.app_name == "simcore-service-datcore-adapter"
3737
assert app_status.services == {"pennsieve": True}
@@ -43,7 +43,7 @@ async def test_check_subsystem_health(async_client: httpx.AsyncClient):
4343

4444
assert pennsieve_health_route.called
4545
assert response.status_code == status.HTTP_200_OK
46-
app_status = AppStatusCheck.parse_obj(response.json())
46+
app_status = AppStatusCheck.model_validate(response.json())
4747
assert app_status
4848
assert app_status.app_name == "simcore-service-datcore-adapter"
4949
assert app_status.services == {"pennsieve": False}

0 commit comments

Comments
 (0)