Skip to content

Commit 6950e1c

Browse files
committed
@bisgaard-itis review: unset doc
1 parent 8440b1f commit 6950e1c

File tree

7 files changed

+38
-30
lines changed

7 files changed

+38
-30
lines changed
Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,32 @@
1-
from typing import Any
1+
from typing import Any, Final
22

33

4-
class UnSet:
5-
VALUE: "UnSet"
4+
class Unset:
5+
"""Sentinel value to indicate that a parameter is not set."""
66

7+
VALUE: "Unset"
78

8-
UnSet.VALUE = UnSet()
9+
10+
unuset: Final = Unset()
11+
Unset.VALUE = Unset()
912

1013

1114
def is_unset(v: Any) -> bool:
12-
return isinstance(v, UnSet)
15+
return isinstance(v, Unset)
1316

1417

1518
def is_set(v: Any) -> bool:
16-
return not isinstance(v, UnSet)
19+
return not isinstance(v, Unset)
1720

1821

1922
def as_dict_exclude_unset(**params) -> dict[str, Any]:
20-
return {k: v for k, v in params.items() if not isinstance(v, UnSet)}
23+
"""Excludes parameters that are instances of UnSet."""
24+
return {k: v for k, v in params.items() if not isinstance(v, Unset)}
2125

2226

2327
def as_dict_exclude_none(**params) -> dict[str, Any]:
28+
"""Analogous to `as_dict_exclude_unset` but with None.
29+
30+
Sometimes None is used as a sentinel value, use this function to exclude it.
31+
"""
2432
return {k: v for k, v in params.items() if v is not None}

packages/common-library/tests/test_exclude.py

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

3-
from common_library.exclude import UnSet, as_dict_exclude_none, as_dict_exclude_unset
3+
from common_library.exclude import Unset, as_dict_exclude_none, as_dict_exclude_unset
44

55

66
def test_as_dict_exclude_unset():
77
def f(
8-
par1: str | UnSet = UnSet.VALUE, par2: int | UnSet = UnSet.VALUE
8+
par1: str | Unset = Unset.VALUE, par2: int | Unset = Unset.VALUE
99
) -> dict[str, Any]:
1010
return as_dict_exclude_unset(par1=par1, par2=par2)
1111

services/web/server/src/simcore_service_webserver/folders/_folders_repository.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import sqlalchemy as sa
77
from aiohttp import web
8-
from common_library.exclude import UnSet, as_dict_exclude_unset, is_set
8+
from common_library.exclude import Unset, as_dict_exclude_unset, is_set
99
from models_library.folders import (
1010
FolderDB,
1111
FolderID,
@@ -265,9 +265,9 @@ async def list_folders_db_as_admin(
265265
connection: AsyncConnection | None = None,
266266
*,
267267
# filter
268-
trashed_explicitly: bool | UnSet = UnSet.VALUE,
269-
trashed_before: datetime | UnSet = UnSet.VALUE,
270-
shared_workspace_id: WorkspaceID | UnSet = UnSet.VALUE, # <-- Workspace filter
268+
trashed_explicitly: bool | Unset = Unset.VALUE,
269+
trashed_before: datetime | Unset = Unset.VALUE,
270+
shared_workspace_id: WorkspaceID | Unset = Unset.VALUE, # <-- Workspace filter
271271
# pagination
272272
offset: NonNegativeInt,
273273
limit: int,
@@ -382,13 +382,13 @@ async def update(
382382
folders_id_or_ids: FolderID | set[FolderID],
383383
product_name: ProductName,
384384
# updatable columns
385-
name: str | UnSet = UnSet.VALUE,
386-
parent_folder_id: FolderID | None | UnSet = UnSet.VALUE,
387-
trashed: datetime | None | UnSet = UnSet.VALUE,
388-
trashed_explicitly: bool | UnSet = UnSet.VALUE,
389-
trashed_by: UserID | None | UnSet = UnSet.VALUE, # who trashed
390-
workspace_id: WorkspaceID | None | UnSet = UnSet.VALUE,
391-
user_id: UserID | None | UnSet = UnSet.VALUE, # ownership
385+
name: str | Unset = Unset.VALUE,
386+
parent_folder_id: FolderID | None | Unset = Unset.VALUE,
387+
trashed: datetime | None | Unset = Unset.VALUE,
388+
trashed_explicitly: bool | Unset = Unset.VALUE,
389+
trashed_by: UserID | None | Unset = Unset.VALUE, # who trashed
390+
workspace_id: WorkspaceID | None | Unset = Unset.VALUE,
391+
user_id: UserID | None | Unset = Unset.VALUE, # ownership
392392
) -> FolderDB:
393393
"""
394394
Batch/single patch of folder/s

services/web/server/src/simcore_service_webserver/projects/_folders_repository.py

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

44
from aiohttp import web
5-
from common_library.exclude import UnSet, as_dict_exclude_unset
5+
from common_library.exclude import Unset, as_dict_exclude_unset
66
from models_library.folders import FolderID
77
from models_library.projects import ProjectID
88
from models_library.users import UserID
@@ -118,7 +118,7 @@ async def update_project_to_folder(
118118
*,
119119
folders_id_or_ids: FolderID | set[FolderID],
120120
# updatable columns
121-
user_id: UserID | None | UnSet = UnSet.VALUE,
121+
user_id: UserID | None | Unset = Unset.VALUE,
122122
) -> None:
123123
"""
124124
Batch/single patch of project to folders

services/web/server/src/simcore_service_webserver/projects/_projects_repository.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import sqlalchemy as sa
77
from aiohttp import web
8-
from common_library.exclude import UnSet, is_set
8+
from common_library.exclude import Unset, is_set
99
from models_library.basic_types import IDStr
1010
from models_library.groups import GroupID
1111
from models_library.projects import ProjectID
@@ -54,9 +54,9 @@ async def list_projects_db_get_as_admin(
5454
connection: AsyncConnection | None = None,
5555
*,
5656
# filter
57-
trashed_explicitly: bool | UnSet = UnSet.VALUE,
58-
trashed_before: datetime | UnSet = UnSet.VALUE,
59-
shared_workspace_id: WorkspaceID | UnSet = UnSet.VALUE,
57+
trashed_explicitly: bool | Unset = Unset.VALUE,
58+
trashed_before: datetime | Unset = Unset.VALUE,
59+
shared_workspace_id: WorkspaceID | Unset = Unset.VALUE,
6060
# pagination
6161
offset: NonNegativeInt = 0,
6262
limit: PositiveInt = MAXIMUM_NUMBER_OF_ITEMS_PER_PAGE,

services/web/server/src/simcore_service_webserver/users/_users_repository.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import sqlalchemy as sa
66
from aiohttp import web
7-
from common_library.exclude import UnSet, is_unset
7+
from common_library.exclude import Unset, is_unset
88
from common_library.users_enums import AccountRequestStatus, UserRole
99
from models_library.groups import GroupID
1010
from models_library.products import ProductName
@@ -565,7 +565,7 @@ async def list_user_pre_registrations(
565565
connection: AsyncConnection | None = None,
566566
*,
567567
filter_by_pre_email: str | None = None,
568-
filter_by_product_name: ProductName | UnSet = UnSet.VALUE,
568+
filter_by_product_name: ProductName | Unset = Unset.VALUE,
569569
filter_by_account_request_status: AccountRequestStatus | None = None,
570570
pagination_limit: int = 50,
571571
pagination_offset: int = 0,

services/web/server/src/simcore_service_webserver/workspaces/_workspaces_repository.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from typing import cast
44

55
from aiohttp import web
6-
from common_library.exclude import UnSet, is_set
6+
from common_library.exclude import Unset, is_set
77
from models_library.groups import GroupID
88
from models_library.products import ProductName
99
from models_library.rest_ordering import OrderBy, OrderDirection
@@ -277,7 +277,7 @@ async def list_workspaces_db_get_as_admin(
277277
connection: AsyncConnection | None = None,
278278
*,
279279
# filter
280-
trashed_before: datetime | UnSet = UnSet.VALUE,
280+
trashed_before: datetime | Unset = Unset.VALUE,
281281
# pagination
282282
offset: NonNegativeInt,
283283
limit: int,

0 commit comments

Comments
 (0)