caster¶
这个模块负责对 Client 转换器 (Caster) 进行数据建模. 用于将 boto3 原生响应 自动转换为对应的 dataclass 对象.
Caster 模块的作用是提供一个便捷的转换层, 让用户可以无缝地将 boto3 client 的 响应从 TypedDict 格式转换为更易于使用的 dataclass 对象.
例如:
# 原生 boto3 用法
client = boto3.client('iam')
response = client.get_role(RoleName='my-role') # 返回 dict
role_id = response['Role']['RoleId'] # 需要手动访问字典键
# 使用 Caster 后的用法
response = client.get_role(RoleName='my-role')
role = caster.get_role(response) # 转换为 dataclass
role_id = role.Role.RoleId # 类型安全的属性访问
- class boto3_dataclass.models.caster.CasterMethod(method_name: str, boto3_stubs_type_name: str, boto3_dataclass_type_name: str)[source]¶
储存着单个转换器方法的信息, 对应一个 AWS service client 的方法.
每个 CasterMethod 代表一个从 boto3 原生响应到 dataclass 的转换方法. 例如 IAM service 的 get_role 方法会对应一个 CasterMethod 实例.
- Parameters:
method_name – 方法名称, 例如 ‘get_role’, ‘list_users’
boto3_stubs_type_name – boto3-stubs 中的 TypedDict 类型名称, 例如 ‘GetRoleResponseTypeDef’
boto3_dataclass_type_name – 对应的 dataclass 类型名称, 例如 ‘GetRoleResponse’ (移除了 ‘TypeDef’ 后缀)
- class boto3_dataclass.models.caster.CasterModule(service_name: str, cms: list[~boto3_dataclass.models.caster.CasterMethod] = <factory>)[source]¶
储存着整个服务的转换器模块信息, 包含该服务所有可转换方法的集合.
每个 AWS 服务 (如 IAM, S3, EC2) 都会对应一个 CasterModule 实例, 包含该服务所有返回 TypedDict 的 client 方法的转换器.
- Parameters:
service_name – AWS 服务名称, 例如 ‘iam’, ‘s3’, ‘ec2’
cms – CasterMethod 列表, 包含该服务所有可转换的方法
- property cms_mapping: dict[str, CasterMethod]¶
NEW 通过方法名称获取转换器方法的映射, 例如
{"get_role": <CasterMethod>, ...}.