From 116a6c0299fb8d88ef93c032a178b2de3ed55755 Mon Sep 17 00:00:00 2001 From: Andrei Neagu <5694077+GitHK@users.noreply.github.com> Date: Mon, 6 Jan 2025 16:16:17 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fixed=20issue=20with=20query=20p?= =?UTF-8?q?arams=20validation=20in=20`dynamic-scheduler`=20(#6989)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Andrei Neagu --- .../src/common_library/{unset.py => exclude.py} | 4 ++++ .../tests/{test_unset.py => test_exclude.py} | 9 ++++++++- .../services/director_v2/_thin_client.py | 9 +++------ .../src/simcore_service_webserver/folders/_folders_db.py | 2 +- .../simcore_service_webserver/projects/_folders_db.py | 2 +- 5 files changed, 17 insertions(+), 9 deletions(-) rename packages/common-library/src/common_library/{unset.py => exclude.py} (64%) rename packages/common-library/tests/{test_unset.py => test_exclude.py} (59%) diff --git a/packages/common-library/src/common_library/unset.py b/packages/common-library/src/common_library/exclude.py similarity index 64% rename from packages/common-library/src/common_library/unset.py rename to packages/common-library/src/common_library/exclude.py index 3d4dfcbc947..6f635dfe643 100644 --- a/packages/common-library/src/common_library/unset.py +++ b/packages/common-library/src/common_library/exclude.py @@ -10,3 +10,7 @@ class UnSet: def as_dict_exclude_unset(**params) -> dict[str, Any]: return {k: v for k, v in params.items() if not isinstance(v, UnSet)} + + +def as_dict_exclude_none(**params) -> dict[str, Any]: + return {k: v for k, v in params.items() if v is not None} diff --git a/packages/common-library/tests/test_unset.py b/packages/common-library/tests/test_exclude.py similarity index 59% rename from packages/common-library/tests/test_unset.py rename to packages/common-library/tests/test_exclude.py index 0fece0d466c..78f5712161e 100644 --- a/packages/common-library/tests/test_unset.py +++ b/packages/common-library/tests/test_exclude.py @@ -1,6 +1,6 @@ from typing import Any -from common_library.unset import UnSet, as_dict_exclude_unset +from common_library.exclude import UnSet, as_dict_exclude_none, as_dict_exclude_unset def test_as_dict_exclude_unset(): @@ -13,3 +13,10 @@ def f( assert f(par1="hi") == {"par1": "hi"} assert f(par2=4) == {"par2": 4} assert f(par1="hi", par2=4) == {"par1": "hi", "par2": 4} + + # still expected behavior + assert as_dict_exclude_unset(par1=None) == {"par1": None} + + +def test_as_dict_exclude_none(): + assert as_dict_exclude_none(par1=None) == {} diff --git a/services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/director_v2/_thin_client.py b/services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/director_v2/_thin_client.py index 412e7377d19..aef8823ce7d 100644 --- a/services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/director_v2/_thin_client.py +++ b/services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/director_v2/_thin_client.py @@ -1,8 +1,8 @@ import datetime from typing import cast +from common_library.exclude import as_dict_exclude_none from common_library.json_serialization import json_dumps -from common_library.unset import UnSet, as_dict_exclude_unset from fastapi import FastAPI, status from httpx import Response, Timeout from models_library.api_schemas_dynamic_scheduler.dynamic_services import ( @@ -133,14 +133,11 @@ async def dynamic_service_retrieve( @retry_on_errors() @expect_status(status.HTTP_200_OK) async def get_dynamic_services( - self, - *, - user_id: UserID | None | UnSet = UnSet.VALUE, - project_id: ProjectID | None | UnSet = UnSet.VALUE, + self, *, user_id: UserID | None = None, project_id: ProjectID | None = None ) -> Response: return await self.client.get( "/dynamic_services", - params=as_dict_exclude_unset(user_id=user_id, project_id=project_id), + params=as_dict_exclude_none(user_id=user_id, project_id=project_id), ) @retry_on_errors() diff --git a/services/web/server/src/simcore_service_webserver/folders/_folders_db.py b/services/web/server/src/simcore_service_webserver/folders/_folders_db.py index 38ad97f44ed..32ff9e4d3a5 100644 --- a/services/web/server/src/simcore_service_webserver/folders/_folders_db.py +++ b/services/web/server/src/simcore_service_webserver/folders/_folders_db.py @@ -10,7 +10,7 @@ import sqlalchemy as sa from aiohttp import web -from common_library.unset import UnSet, as_dict_exclude_unset +from common_library.exclude import UnSet, as_dict_exclude_unset from models_library.folders import ( FolderDB, FolderID, diff --git a/services/web/server/src/simcore_service_webserver/projects/_folders_db.py b/services/web/server/src/simcore_service_webserver/projects/_folders_db.py index d8c965be26b..d4fde1f5ce9 100644 --- a/services/web/server/src/simcore_service_webserver/projects/_folders_db.py +++ b/services/web/server/src/simcore_service_webserver/projects/_folders_db.py @@ -8,7 +8,7 @@ from datetime import datetime from aiohttp import web -from common_library.unset import UnSet, as_dict_exclude_unset +from common_library.exclude import UnSet, as_dict_exclude_unset from models_library.folders import FolderID from models_library.projects import ProjectID from models_library.users import UserID