Type Annotations for boto3 SecretsManager
types-boto3-secretsmanager provides comprehensive type annotations for the `boto3` AWS Secrets Manager service, enhancing static analysis, code completion, and overall developer experience in Python projects. It is automatically generated by the `mypy-boto3-builder` and is currently at version 1.42.8, with releases closely tracking `boto3` updates to ensure compatibility and extensive type coverage across all service operations, paginators, and type definitions.
Common errors
-
ModuleNotFoundError: No module named 'mypy_boto3_secretsmanager'
cause The `types-boto3-secretsmanager` package is not installed in your environment.fixRun `pip install types-boto3-secretsmanager` or `pip install 'boto3-stubs[secretsmanager]'`. -
error: Missing type stub for 'boto3.client' (reportMissingStubs)
cause Your type checker (e.g., mypy, pyright) cannot find type information for boto3 when using the Secrets Manager client.fixEnsure `types-boto3-secretsmanager` or `boto3-stubs[secretsmanager]` is installed and your type checker is correctly configured to discover PEP 561-compliant stub packages. Updating your type checker might also help. -
error: 'SecretsManagerClient' is not a known type (reportUnknownMemberAccess)
cause The `SecretsManagerClient` type was either not imported correctly, or your type checker is not resolving it properly.fixVerify your import statement: `from mypy_boto3_secretsmanager import SecretsManagerClient`. Also, check if your type checker is up-to-date and configured for PEP 561 packages.
Warnings
- breaking Starting with `mypy-boto3-builder` version 8.12.0 (which generated this package), Python 3.8 is no longer supported for generated stub packages. This applies to `types-boto3-secretsmanager` versions built with builder 8.12.0 or newer.
- breaking Following the migration to PEP 561 packages in `mypy-boto3-builder` 8.12.0, ensure your `mypy` or other type checker is up-to-date. Older versions might not correctly discover or utilize the stubs, leading to `Missing type stub` errors or incorrect type inference.
- breaking In `mypy-boto3-builder` version 8.9.0, type definition (TypeDef) naming conventions changed. This includes shorter names for packed method arguments and revised postfix handling for conflicting `TypeDef` names (e.g., `CreateDistributionExtraRequestTypeDef` became `CreateDistributionRequestExtraTypeDef`).
- gotcha These packages provide only type stubs and are not intended for runtime use. To avoid adding `types-boto3-secretsmanager` as a production dependency and ensure it's only used by static analysis tools, wrap your type imports within an `if TYPE_CHECKING:` block.
Install
-
pip install types-boto3-secretsmanager -
pip install 'boto3-stubs[secretsmanager]'
Imports
- SecretsManagerClient
from boto3.client import SecretsManagerClient
from mypy_boto3_secretsmanager import SecretsManagerClient
- ListSecretsPaginator
from mypy_boto3_secretsmanager.paginator import ListSecretsPaginator
- FilterNameStringTypeType
from mypy_boto3_secretsmanager.literals import FilterNameStringTypeType
- APIErrorTypeTypeDef
from mypy_boto3_secretsmanager.type_defs import APIErrorTypeTypeDef
- TYPE_CHECKING for stubs
from typing import TYPE_CHECKING if TYPE_CHECKING: from mypy_boto3_secretsmanager import SecretsManagerClient else: SecretsManagerClient = object
Quickstart
import boto3
from typing import TYPE_CHECKING
import os
# Ensure AWS credentials are configured (e.g., via environment variables or ~/.aws/credentials)
# os.environ['AWS_ACCESS_KEY_ID'] = 'YOUR_ACCESS_KEY'
# os.environ['AWS_SECRET_ACCESS_KEY'] = 'YOUR_SECRET_KEY'
# os.environ['AWS_REGION'] = 'us-east-1'
if TYPE_CHECKING:
from mypy_boto3_secretsmanager import SecretsManagerClient
def get_secret_value_typed(secret_name: str, region_name: str) -> str:
session = boto3.session.Session()
client: SecretsManagerClient = session.client(
service_name='secretsmanager',
region_name=region_name,
)
try:
response = client.get_secret_value(
SecretId=secret_name
)
if 'SecretString' in response:
return response['SecretString']
elif 'SecretBinary' in response:
return response['SecretBinary'].decode('utf-8') # Assuming UTF-8 encoded binary
except client.exceptions.ResourceNotFoundException:
print(f"Secret '{secret_name}' not found.")
except client.exceptions.ClientError as e:
print(f"An AWS client error occurred: {e}")
return ""
# Example usage (uncomment and replace with valid secret name and region)
# if __name__ == "__main__":
# secret = get_secret_value_typed("my-test-secret", os.environ.get('AWS_REGION', 'us-east-1'))
# if secret:
# print(f"Retrieved secret: {secret}")