python boto3中dynamo db资源的正确类型提示是什么?

iyfjxgzm  于 2023-03-16  发布在  Python
关注(0)|答案(1)|浏览(95)

我已经将ruff添加到一个现有的项目中,我的规则之一是flake 8-annotations。我正在为这样做的函数的类型提示而挣扎:

def _dynamodb_resource():
    return boto3.resource('dynamodb', region_name=REGION)

在文档中,它说boto3.resources.base.ServiceResource将是正确的选择,但是这给了我另一个警告,即ServiceResource没有Table属性。有没有办法让它工作而不发出任何警告?

from boto3.resources.base import ServiceResource

dynamodb_resource = _dynamodb_resource()
table = dynamodb_resource.Table("table") <-- Unresolved attribute reference 'Table' for class 'ServiceResource'

def _dynamodb_resource() -> ServiceResource:
    return boto3.resource('dynamodb', region_name=REGION)
ejk8hzay

ejk8hzay1#

Boto3类型是在运行时生成的,所以它们往往会导致静态检查器出现问题。有第三方库可以解决这个问题,即下面这个库:https://pypi.org/project/boto3-stubs/
在你的例子中,它看起来像这样:

from mypy_boto3_dynamodb.service_resource import DynamoDBServiceResource

def get_dynamodb_resource() -> DynamoDBServiceResource:
    return boto3.resource("dynamodb")

相关问题