From bd4243d0d3fc40ff038fad2dc4291120164d97f9 Mon Sep 17 00:00:00 2001 From: Troy Swanson Date: Mon, 18 Dec 2023 10:03:36 -0600 Subject: [PATCH 1/6] Add overload signatures for get_parameter function --- .../utilities/parameters/ssm.py | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/aws_lambda_powertools/utilities/parameters/ssm.py b/aws_lambda_powertools/utilities/parameters/ssm.py index ebe8e57ac21..14230a8d451 100644 --- a/aws_lambda_powertools/utilities/parameters/ssm.py +++ b/aws_lambda_powertools/utilities/parameters/ssm.py @@ -545,9 +545,45 @@ def _raise_if_errors_key_is_present(parameters: Dict, reserved_parameter: str, r ) +@overload def get_parameter( name: str, - transform: Optional[str] = None, + transform: None = None, + decrypt: Optional[bool] = None, + force_fetch: bool = False, + max_age: Optional[int] = None, + **sdk_options, +) -> str: + ... + + +@overload +def get_parameter( + name: str, + transform: Literal["json"], + decrypt: Optional[bool] = None, + force_fetch: bool = False, + max_age: Optional[int] = None, + **sdk_options, +) -> dict: + ... + + +@overload +def get_parameter( + name: str, + transform: Literal["binary"], + decrypt: Optional[bool] = None, + force_fetch: bool = False, + max_age: Optional[int] = None, + **sdk_options, +) -> bytes: + ... + + +def get_parameter( + name: str, + transform: Optional[Literal["json", "binary"]] = None, decrypt: Optional[bool] = None, force_fetch: bool = False, max_age: Optional[int] = None, From 5f5292ef184854203fa4cc829a875c2fd0d01742 Mon Sep 17 00:00:00 2001 From: Troy Swanson Date: Mon, 18 Dec 2023 10:30:31 -0600 Subject: [PATCH 2/6] Remove unnecessary type ignore comment --- examples/parameters/src/getting_started_single_ssm_parameter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/parameters/src/getting_started_single_ssm_parameter.py b/examples/parameters/src/getting_started_single_ssm_parameter.py index d31c7a180f1..f35aa3ede84 100644 --- a/examples/parameters/src/getting_started_single_ssm_parameter.py +++ b/examples/parameters/src/getting_started_single_ssm_parameter.py @@ -7,7 +7,7 @@ def lambda_handler(event: dict, context: LambdaContext) -> dict: try: # Retrieve a single parameter - endpoint_comments: str = parameters.get_parameter("/lambda-powertools/endpoint_comments") # type: ignore[assignment] # noqa: E501 + endpoint_comments = parameters.get_parameter("/lambda-powertools/endpoint_comments") # the value of this parameter is https://jsonplaceholder.typicode.com/comments/ comments: requests.Response = requests.get(endpoint_comments) From c6b5b038be689bbaf1a29526ee6d1298aaaebc7a Mon Sep 17 00:00:00 2001 From: Troy Swanson Date: Mon, 18 Dec 2023 10:55:14 -0600 Subject: [PATCH 3/6] Add overload signatures for get_parameters function --- .../utilities/parameters/ssm.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/aws_lambda_powertools/utilities/parameters/ssm.py b/aws_lambda_powertools/utilities/parameters/ssm.py index 14230a8d451..632065bcaf1 100644 --- a/aws_lambda_powertools/utilities/parameters/ssm.py +++ b/aws_lambda_powertools/utilities/parameters/ssm.py @@ -661,6 +661,48 @@ def get_parameter( ) +@overload +def get_parameters( + path: str, + transform: None = None, + recursive: bool = True, + decrypt: Optional[bool] = None, + force_fetch: bool = False, + max_age: Optional[int] = None, + raise_on_transform_error: bool = False, + **sdk_options, +) -> Dict[str, str]: + ... + + +@overload +def get_parameters( + path: str, + transform: Literal["json"], + recursive: bool = True, + decrypt: Optional[bool] = None, + force_fetch: bool = False, + max_age: Optional[int] = None, + raise_on_transform_error: bool = False, + **sdk_options, +) -> Dict[str, dict]: + ... + + +@overload +def get_parameters( + path: str, + transform: Literal["binary"], + recursive: bool = True, + decrypt: Optional[bool] = None, + force_fetch: bool = False, + max_age: Optional[int] = None, + raise_on_transform_error: bool = False, + **sdk_options, +) -> Dict[str, bytes]: + ... + + def get_parameters( path: str, transform: Optional[str] = None, From b2b5ec4f427489f179076e85f686b46a654e483a Mon Sep 17 00:00:00 2001 From: Troy Swanson Date: Mon, 18 Dec 2023 13:27:40 -0600 Subject: [PATCH 4/6] Add literals for get_parameters transform argument --- aws_lambda_powertools/utilities/parameters/ssm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws_lambda_powertools/utilities/parameters/ssm.py b/aws_lambda_powertools/utilities/parameters/ssm.py index 632065bcaf1..5b9b8a5e85e 100644 --- a/aws_lambda_powertools/utilities/parameters/ssm.py +++ b/aws_lambda_powertools/utilities/parameters/ssm.py @@ -705,7 +705,7 @@ def get_parameters( def get_parameters( path: str, - transform: Optional[str] = None, + transform: Optional[Literal["json", "binary"]] = None, recursive: bool = True, decrypt: Optional[bool] = None, force_fetch: bool = False, From f5cfcc224dcc1bd3adf0df08dd559b2f4ded088f Mon Sep 17 00:00:00 2001 From: Ruben Fonseca Date: Wed, 20 Dec 2023 14:49:50 +0100 Subject: [PATCH 5/6] chore: add missing 'auto' case --- .../utilities/parameters/ssm.py | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/aws_lambda_powertools/utilities/parameters/ssm.py b/aws_lambda_powertools/utilities/parameters/ssm.py index 5b9b8a5e85e..df98445a29b 100644 --- a/aws_lambda_powertools/utilities/parameters/ssm.py +++ b/aws_lambda_powertools/utilities/parameters/ssm.py @@ -577,13 +577,25 @@ def get_parameter( force_fetch: bool = False, max_age: Optional[int] = None, **sdk_options, +) -> Union[str, dict, bytes]: + ... + + +@overload +def get_parameter( + name: str, + transform: Literal["auto"], + decrypt: Optional[bool] = None, + force_fetch: bool = False, + max_age: Optional[int] = None, + **sdk_options, ) -> bytes: ... def get_parameter( name: str, - transform: Optional[Literal["json", "binary"]] = None, + transform: Optional[Literal["json", "binary", "auto"]] = None, decrypt: Optional[bool] = None, force_fetch: bool = False, max_age: Optional[int] = None, @@ -703,9 +715,23 @@ def get_parameters( ... +@overload +def get_parameters( + path: str, + transform: Literal["auto"], + recursive: bool = True, + decrypt: Optional[bool] = None, + force_fetch: bool = False, + max_age: Optional[int] = None, + raise_on_transform_error: bool = False, + **sdk_options, +) -> Union[Dict[str, bytes], Dict[str, dict], Dict[str, str]]: + ... + + def get_parameters( path: str, - transform: Optional[Literal["json", "binary"]] = None, + transform: Optional[Literal["json", "binary", "auto"]] = None, recursive: bool = True, decrypt: Optional[bool] = None, force_fetch: bool = False, From 59f71b181b8464d4346087d94ce9202deff90e89 Mon Sep 17 00:00:00 2001 From: Troy Swanson Date: Wed, 20 Dec 2023 09:37:24 -0600 Subject: [PATCH 6/6] Consolidate around the TransformOptions type alias --- aws_lambda_powertools/utilities/parameters/ssm.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aws_lambda_powertools/utilities/parameters/ssm.py b/aws_lambda_powertools/utilities/parameters/ssm.py index df98445a29b..7df0e66c027 100644 --- a/aws_lambda_powertools/utilities/parameters/ssm.py +++ b/aws_lambda_powertools/utilities/parameters/ssm.py @@ -595,7 +595,7 @@ def get_parameter( def get_parameter( name: str, - transform: Optional[Literal["json", "binary", "auto"]] = None, + transform: TransformOptions = None, decrypt: Optional[bool] = None, force_fetch: bool = False, max_age: Optional[int] = None, @@ -731,7 +731,7 @@ def get_parameters( def get_parameters( path: str, - transform: Optional[Literal["json", "binary", "auto"]] = None, + transform: TransformOptions = None, recursive: bool = True, decrypt: Optional[bool] = None, force_fetch: bool = False,