From 59e4f48d38cc5d26b65d72dfce73174a378d8e3b Mon Sep 17 00:00:00 2001 From: Laure-di Date: Mon, 6 Jan 2025 17:01:42 +0100 Subject: [PATCH 1/9] add modul --- docs/module.rst | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 docs/module.rst diff --git a/docs/module.rst b/docs/module.rst new file mode 100644 index 000000000..553f82423 --- /dev/null +++ b/docs/module.rst @@ -0,0 +1,6 @@ +guide +===== + +.. toctree:: + :maxdepth: 4 + From 6589b9d88441949c4bcbb1b365bd83cb84693efb Mon Sep 17 00:00:00 2001 From: Laure-di Date: Mon, 6 Jan 2025 17:03:09 +0100 Subject: [PATCH 2/9] rm module --- docs/module.rst | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/module.rst b/docs/module.rst index 553f82423..e69de29bb 100644 --- a/docs/module.rst +++ b/docs/module.rst @@ -1,6 +0,0 @@ -guide -===== - -.. toctree:: - :maxdepth: 4 - From 69d0b2c074b8d134b86726d16abfec7c80bfd9d1 Mon Sep 17 00:00:00 2001 From: Scaleway Bot Date: Wed, 15 Jan 2025 15:23:56 +0100 Subject: [PATCH 3/9] feat(tem): add blocklisted flag (#830) From 46a6c4ea2ab0be901f99cdea3f1cbe57d3a5dbcd Mon Sep 17 00:00:00 2001 From: Laure-di Date: Fri, 11 Jul 2025 15:44:56 +0200 Subject: [PATCH 4/9] fix(core): add support marshal_func --- .../scaleway_core/utils/resolve_one_of.py | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/scaleway-core/scaleway_core/utils/resolve_one_of.py b/scaleway-core/scaleway_core/utils/resolve_one_of.py index 98ab293f5..7b6c360db 100644 --- a/scaleway-core/scaleway_core/utils/resolve_one_of.py +++ b/scaleway-core/scaleway_core/utils/resolve_one_of.py @@ -1,41 +1,56 @@ +from collections.abc import Callable from dataclasses import dataclass from typing import Any, Dict, Generic, List, Optional, TypeVar +from scaleway_core.profile import ProfileDefaults + T = TypeVar("T") @dataclass class OneOfPossibility(Generic[T]): param: str - value: Optional[T] - - default: Optional[T] = None + default: Optional[T | ProfileDefaults] = None + marshal_func: Optional[Callable[[T, T | None], Dict[str, Any]]] = None def resolve_one_of( possibilities: List[OneOfPossibility[Any]], is_required: bool = False -) -> Dict[str, Any]: +) -> dict[str, Any | None] | str | dict[Any, Any]: """ Resolves the ideal parameter and value amongst an optional list. + Uses marshal_func if provided. """ - # Get the first non-empty parameter + # Try to resolve using non-None value for possibility in possibilities: if possibility.value is not None: + if possibility.marshal_func is not None: + return { + possibility.param: possibility.marshal_func( + possibility.value, possibility.default + ) + } return {possibility.param: possibility.value} - # Get the first non-empty default + # Try to resolve using non-None default for possibility in possibilities: if possibility.default is not None: + if possibility.marshal_func is not None: + return { + possibility.param: possibility.marshal_func( + None, possibility.default + ) + } return {possibility.param: possibility.default} - # If required, raise an error + # If required but unresolved, raise an error if is_required: possibilities_keys = " or ".join( [possibility.param for possibility in possibilities] ) raise ValueError(f"one of ${possibilities_keys} must be present") - # Else, return an empty dict - return {} + # Else, return empty dict + return {} \ No newline at end of file From 884c6273fcb4f3277f3595bbc187d50de3218779 Mon Sep 17 00:00:00 2001 From: Laure-di Date: Fri, 11 Jul 2025 16:43:01 +0200 Subject: [PATCH 5/9] fix ruff --- scaleway-core/scaleway_core/utils/resolve_one_of.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scaleway-core/scaleway_core/utils/resolve_one_of.py b/scaleway-core/scaleway_core/utils/resolve_one_of.py index 7b6c360db..306a495de 100644 --- a/scaleway-core/scaleway_core/utils/resolve_one_of.py +++ b/scaleway-core/scaleway_core/utils/resolve_one_of.py @@ -53,4 +53,4 @@ def resolve_one_of( raise ValueError(f"one of ${possibilities_keys} must be present") # Else, return empty dict - return {} \ No newline at end of file + return {} From 9cac7eb5f0464668e87cfe696de7e40c070e3e9c Mon Sep 17 00:00:00 2001 From: Laure-di Date: Fri, 11 Jul 2025 16:54:56 +0200 Subject: [PATCH 6/9] fix: typing isuue --- scaleway-core/scaleway_core/utils/resolve_one_of.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scaleway-core/scaleway_core/utils/resolve_one_of.py b/scaleway-core/scaleway_core/utils/resolve_one_of.py index 306a495de..b81f9f861 100644 --- a/scaleway-core/scaleway_core/utils/resolve_one_of.py +++ b/scaleway-core/scaleway_core/utils/resolve_one_of.py @@ -17,7 +17,7 @@ class OneOfPossibility(Generic[T]): def resolve_one_of( possibilities: List[OneOfPossibility[Any]], is_required: bool = False -) -> dict[str, Any | None] | str | dict[Any, Any]: +) -> dict[Any | Any, None] | str | dict[Any, Any]: """ Resolves the ideal parameter and value amongst an optional list. Uses marshal_func if provided. From 167793e5c9d4e7e78c1cabfc56f2edf7fe2959e8 Mon Sep 17 00:00:00 2001 From: Laure-di Date: Wed, 16 Jul 2025 09:42:55 +0200 Subject: [PATCH 7/9] fix typing --- scaleway-core/scaleway_core/utils/resolve_one_of.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scaleway-core/scaleway_core/utils/resolve_one_of.py b/scaleway-core/scaleway_core/utils/resolve_one_of.py index b81f9f861..43c766868 100644 --- a/scaleway-core/scaleway_core/utils/resolve_one_of.py +++ b/scaleway-core/scaleway_core/utils/resolve_one_of.py @@ -17,7 +17,7 @@ class OneOfPossibility(Generic[T]): def resolve_one_of( possibilities: List[OneOfPossibility[Any]], is_required: bool = False -) -> dict[Any | Any, None] | str | dict[Any, Any]: +) -> dict[str | Any] | str | dict[Any, Any]: """ Resolves the ideal parameter and value amongst an optional list. Uses marshal_func if provided. From cc7197df7a2cc4e69904aba639d595483e078e48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Mon, 21 Jul 2025 17:31:32 +0200 Subject: [PATCH 8/9] Try to fix type checking --- scaleway-core/scaleway_core/utils/resolve_one_of.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scaleway-core/scaleway_core/utils/resolve_one_of.py b/scaleway-core/scaleway_core/utils/resolve_one_of.py index 56bc6d5c6..f336d653e 100644 --- a/scaleway-core/scaleway_core/utils/resolve_one_of.py +++ b/scaleway-core/scaleway_core/utils/resolve_one_of.py @@ -17,7 +17,7 @@ class OneOfPossibility(Generic[T]): def resolve_one_of( possibilities: List[OneOfPossibility[Any]], is_required: bool = False -) -> dict[str | Any] | str | dict[Any, Any]: +) -> dict[str, Any] | str | dict[Any, Any]: """ Resolves the ideal parameter and value amongst an optional list. Uses marshal_func if provided. From c08253e9defcec2cf5875e79c71f6b574dee7cf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Mon, 21 Jul 2025 17:41:23 +0200 Subject: [PATCH 9/9] Fix typing --- scaleway-core/scaleway_core/utils/resolve_one_of.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scaleway-core/scaleway_core/utils/resolve_one_of.py b/scaleway-core/scaleway_core/utils/resolve_one_of.py index f336d653e..87f1dc5ef 100644 --- a/scaleway-core/scaleway_core/utils/resolve_one_of.py +++ b/scaleway-core/scaleway_core/utils/resolve_one_of.py @@ -1,6 +1,7 @@ from collections.abc import Callable from dataclasses import dataclass from typing import Any, Dict, Generic, List, Optional, TypeVar +from _typeshed import SupportsKeysAndGetItem from scaleway_core.profile import ProfileDefaults @@ -17,7 +18,7 @@ class OneOfPossibility(Generic[T]): def resolve_one_of( possibilities: List[OneOfPossibility[Any]], is_required: bool = False -) -> dict[str, Any] | str | dict[Any, Any]: +) -> SupportsKeysAndGetItem[str, Any]: """ Resolves the ideal parameter and value amongst an optional list. Uses marshal_func if provided.