From d9d872f3832d1e663cdc9840abe9f74de1453868 Mon Sep 17 00:00:00 2001 From: Barak <162876273+barakor-vs@users.noreply.github.com> Date: Sun, 25 May 2025 16:59:48 +0300 Subject: [PATCH 1/6] add region as a parameter to aws secret manager --- pydantic_settings/sources/providers/aws.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pydantic_settings/sources/providers/aws.py b/pydantic_settings/sources/providers/aws.py index 22a1a91b..9aaed877 100644 --- a/pydantic_settings/sources/providers/aws.py +++ b/pydantic_settings/sources/providers/aws.py @@ -29,18 +29,20 @@ def import_aws_secrets_manager() -> None: class AWSSecretsManagerSettingsSource(EnvSettingsSource): _secret_id: str + _region: str _secretsmanager_client: SecretsManagerClient # type: ignore def __init__( self, settings_cls: type[BaseSettings], secret_id: str, + region: str | None = None, env_prefix: str | None = None, env_parse_none_str: str | None = None, env_parse_enums: bool | None = None, ) -> None: import_aws_secrets_manager() - self._secretsmanager_client = boto3_client('secretsmanager') # type: ignore + self._secretsmanager_client = boto3_client('secretsmanager', region = region) # type: ignore self._secret_id = secret_id super().__init__( settings_cls, From 6e6f27fce3ccfbe0bebdc81b2417bdd00234a732 Mon Sep 17 00:00:00 2001 From: Barak <162876273+barakor-vs@users.noreply.github.com> Date: Sun, 25 May 2025 17:03:24 +0300 Subject: [PATCH 2/6] whitespace removal --- pydantic_settings/sources/providers/aws.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydantic_settings/sources/providers/aws.py b/pydantic_settings/sources/providers/aws.py index 9aaed877..b4956c08 100644 --- a/pydantic_settings/sources/providers/aws.py +++ b/pydantic_settings/sources/providers/aws.py @@ -36,7 +36,7 @@ def __init__( self, settings_cls: type[BaseSettings], secret_id: str, - region: str | None = None, + region: str | None = None, env_prefix: str | None = None, env_parse_none_str: str | None = None, env_parse_enums: bool | None = None, From b3922df4351b90bc69e077af96beb996607bf5aa Mon Sep 17 00:00:00 2001 From: Barak <162876273+barakor-vs@users.noreply.github.com> Date: Sun, 25 May 2025 17:04:54 +0300 Subject: [PATCH 3/6] format --- pydantic_settings/sources/providers/aws.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/pydantic_settings/sources/providers/aws.py b/pydantic_settings/sources/providers/aws.py index b4956c08..24d3f5cb 100644 --- a/pydantic_settings/sources/providers/aws.py +++ b/pydantic_settings/sources/providers/aws.py @@ -1,4 +1,6 @@ -from __future__ import annotations as _annotations # important for BaseSettings import to work +from __future__ import ( + annotations as _annotations, +) # important for BaseSettings import to work import json from collections.abc import Mapping @@ -23,7 +25,7 @@ def import_aws_secrets_manager() -> None: from mypy_boto3_secretsmanager.client import SecretsManagerClient except ImportError as e: # pragma: no cover raise ImportError( - 'AWS Secrets Manager dependencies are not installed, run `pip install pydantic-settings[aws-secrets-manager]`' + "AWS Secrets Manager dependencies are not installed, run `pip install pydantic-settings[aws-secrets-manager]`" ) from e @@ -42,30 +44,32 @@ def __init__( env_parse_enums: bool | None = None, ) -> None: import_aws_secrets_manager() - self._secretsmanager_client = boto3_client('secretsmanager', region = region) # type: ignore + self._secretsmanager_client = boto3_client("secretsmanager", region=region) # type: ignore self._secret_id = secret_id super().__init__( settings_cls, case_sensitive=True, env_prefix=env_prefix, - env_nested_delimiter='--', + env_nested_delimiter="--", env_ignore_empty=False, env_parse_none_str=env_parse_none_str, env_parse_enums=env_parse_enums, ) def _load_env_vars(self) -> Mapping[str, Optional[str]]: - response = self._secretsmanager_client.get_secret_value(SecretId=self._secret_id) # type: ignore + response = self._secretsmanager_client.get_secret_value( + SecretId=self._secret_id + ) # type: ignore - return json.loads(response['SecretString']) + return json.loads(response["SecretString"]) def __repr__(self) -> str: return ( - f'{self.__class__.__name__}(secret_id={self._secret_id!r}, ' - f'env_nested_delimiter={self.env_nested_delimiter!r})' + f"{self.__class__.__name__}(secret_id={self._secret_id!r}, " + f"env_nested_delimiter={self.env_nested_delimiter!r})" ) __all__ = [ - 'AWSSecretsManagerSettingsSource', + "AWSSecretsManagerSettingsSource", ] From a8c4b0aa4668a45fcbae6bc8d1b6b39f584593c0 Mon Sep 17 00:00:00 2001 From: Barak <162876273+barakor-vs@users.noreply.github.com> Date: Sun, 25 May 2025 17:07:17 +0300 Subject: [PATCH 4/6] unformat --- pydantic_settings/sources/providers/aws.py | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/pydantic_settings/sources/providers/aws.py b/pydantic_settings/sources/providers/aws.py index 24d3f5cb..5332aa17 100644 --- a/pydantic_settings/sources/providers/aws.py +++ b/pydantic_settings/sources/providers/aws.py @@ -1,6 +1,4 @@ -from __future__ import ( - annotations as _annotations, -) # important for BaseSettings import to work +from __future__ import annotations as _annotations # important for BaseSettings import to work import json from collections.abc import Mapping @@ -25,7 +23,7 @@ def import_aws_secrets_manager() -> None: from mypy_boto3_secretsmanager.client import SecretsManagerClient except ImportError as e: # pragma: no cover raise ImportError( - "AWS Secrets Manager dependencies are not installed, run `pip install pydantic-settings[aws-secrets-manager]`" + 'AWS Secrets Manager dependencies are not installed, run `pip install pydantic-settings[aws-secrets-manager]`' ) from e @@ -50,26 +48,24 @@ def __init__( settings_cls, case_sensitive=True, env_prefix=env_prefix, - env_nested_delimiter="--", + env_nested_delimiter='--', env_ignore_empty=False, env_parse_none_str=env_parse_none_str, env_parse_enums=env_parse_enums, ) def _load_env_vars(self) -> Mapping[str, Optional[str]]: - response = self._secretsmanager_client.get_secret_value( - SecretId=self._secret_id - ) # type: ignore + response = self._secretsmanager_client.get_secret_value(SecretId=self._secret_id) # type: ignore - return json.loads(response["SecretString"]) + return json.loads(response['SecretString']) def __repr__(self) -> str: return ( - f"{self.__class__.__name__}(secret_id={self._secret_id!r}, " - f"env_nested_delimiter={self.env_nested_delimiter!r})" + f'{self.__class__.__name__}(secret_id={self._secret_id!r}, ' + f'env_nested_delimiter={self.env_nested_delimiter!r})' ) __all__ = [ - "AWSSecretsManagerSettingsSource", + 'AWSSecretsManagerSettingsSource', ] From 8be5f7e39b93b2b93d4602d71bdbfecadca75735 Mon Sep 17 00:00:00 2001 From: Barak <162876273+barakor-vs@users.noreply.github.com> Date: Sun, 25 May 2025 17:08:41 +0300 Subject: [PATCH 5/6] Update aws.py --- pydantic_settings/sources/providers/aws.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydantic_settings/sources/providers/aws.py b/pydantic_settings/sources/providers/aws.py index 5332aa17..38c0c949 100644 --- a/pydantic_settings/sources/providers/aws.py +++ b/pydantic_settings/sources/providers/aws.py @@ -42,7 +42,7 @@ def __init__( env_parse_enums: bool | None = None, ) -> None: import_aws_secrets_manager() - self._secretsmanager_client = boto3_client("secretsmanager", region=region) # type: ignore + self._secretsmanager_client = boto3_client('secretsmanager', region=region) # type: ignore self._secret_id = secret_id super().__init__( settings_cls, From 87be296328847d6a215e96f942673eae1779f142 Mon Sep 17 00:00:00 2001 From: Barak <162876273+barakor-vs@users.noreply.github.com> Date: Sun, 25 May 2025 17:42:52 +0300 Subject: [PATCH 6/6] Update aws.py --- pydantic_settings/sources/providers/aws.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pydantic_settings/sources/providers/aws.py b/pydantic_settings/sources/providers/aws.py index 38c0c949..dc5c0cd0 100644 --- a/pydantic_settings/sources/providers/aws.py +++ b/pydantic_settings/sources/providers/aws.py @@ -29,20 +29,19 @@ def import_aws_secrets_manager() -> None: class AWSSecretsManagerSettingsSource(EnvSettingsSource): _secret_id: str - _region: str _secretsmanager_client: SecretsManagerClient # type: ignore def __init__( self, settings_cls: type[BaseSettings], secret_id: str, - region: str | None = None, + region_name: str | None = None, env_prefix: str | None = None, env_parse_none_str: str | None = None, env_parse_enums: bool | None = None, ) -> None: import_aws_secrets_manager() - self._secretsmanager_client = boto3_client('secretsmanager', region=region) # type: ignore + self._secretsmanager_client = boto3_client('secretsmanager', region_name=region_name) # type: ignore self._secret_id = secret_id super().__init__( settings_cls,