mypy-boto3-apigateway Type Stubs
mypy-boto3-apigateway provides type annotations (stubs) for the boto3 APIGateway client and its associated data structures. It's part of the `mypy-boto3` ecosystem, generated by `mypy-boto3-builder`, aiming to enhance type-checking for `boto3` users. The library is actively maintained with frequent updates, often aligning with new `boto3` and AWS API releases. The current version is 1.42.68.
Warnings
- breaking Version 8.12.0 of `mypy-boto3-builder` (which generates this package) removed support for Python 3.8. Ensure your project uses Python 3.9 or higher.
- breaking Starting with `mypy-boto3-builder` version 8.9.0, some TypeDef naming conventions changed. Specifically, redundant `Request` postfixes were removed (e.g., `CreateDistributionRequestRequestTypeDef` became `CreateDistributionRequestTypeDef`).
- gotcha Mismatching `mypy-boto3-apigateway` and `boto3`/`botocore` versions can lead to incorrect type checking or `mypy` errors. The `mypy-boto3-*` packages are generated based on specific `botocore` versions.
- gotcha The `mypy-boto3` ecosystem migrated to `PEP 561` compliant packages in version 8.12.0. While this change is generally transparent, ensure your `mypy` configuration (e.g., `mypy_path`) is not bypassing standard Python package discovery for type stubs.
Install
-
pip install mypy-boto3-apigateway boto3 -
pip install "boto3-stubs[apigateway]"
Imports
- APIGatewayClient
from mypy_boto3_apigateway.client import APIGatewayClient
- GetRestApisRequestRequestTypeDef
from mypy_boto3_apigateway.type_defs import GetRestApisRequestRequestTypeDef
- GetRestApisResponseTypeDef
from mypy_boto3_apigateway.type_defs import GetRestApisResponseTypeDef
- boto3.client
import boto3; client: APIGatewayClient = boto3.client('apigateway')
Quickstart
import boto3
from mypy_boto3_apigateway.client import APIGatewayClient
from mypy_boto3_apigateway.type_defs import GetRestApisRequestRequestTypeDef, GetRestApisResponseTypeDef
# Configure AWS credentials if not using default profile/env vars
# import os
# os.environ['AWS_ACCESS_KEY_ID'] = os.environ.get('AWS_ACCESS_KEY_ID', '')
# os.environ['AWS_SECRET_ACCESS_KEY'] = os.environ.get('AWS_SECRET_ACCESS_KEY', '')
# os.environ['AWS_REGION'] = os.environ.get('AWS_REGION', 'us-east-1')
def list_apigateway_rest_apis() -> None:
"""Lists up to 10 APIGateway REST APIs and demonstrates type hinting."""
# Type hint the client for static analysis
client: APIGatewayClient = boto3.client("apigateway")
# Use a TypedDict for request parameters, ensuring correct types and keys
request_params: GetRestApisRequestRequestTypeDef = {
"position": "0",
"limit": 10
}
# The response is also a TypedDict, allowing safe attribute access
response: GetRestApisResponseTypeDef = client.get_rest_apis(**request_params)
print(f"Found {len(response.get('items', []))} REST APIs:")
for item in response.get('items', []):
name = item.get('name', 'N/A')
api_id = item.get('id', 'N/A')
print(f"- {name} (ID: {api_id})")
# mypy would flag issues like:
# print(response['non_existent_key']) # Error: Key 'non_existent_key' not found in GetRestApisResponseTypeDef
if __name__ == "__main__":
list_apigateway_rest_apis()