无法将 AWS-CDK 类型“(cls: Runtime) -> Runtime”分配给类型“Runtime”

AWS-CDK Type "(cls: Runtime) -> Runtime" cannot be assigned to type "Runtime"

提问人:jjk 提问时间:3/23/2022 更新时间:12/6/2022 访问量:500

问:

我收到指向变量的 flycheck 错误:runtime=_lambda..

Argument of type "(cls: Runtime) -> Runtime" cannot be assigned to parameter "runtime" of type "Runtime" in function "__init__"   Type "(cls: Runtime) -> Runtime" cannot be assigned to type "Runtime"

# create lambda function
# executed as root
function = _lambda.Function(self,
                            "lambda_function",
                            runtime=_lambda.Runtime.PYTHON_3_7,
                            handler="lambda_handler.main",
                            code=_lambda.Code.from_asset("./lambda"),
                            environment={
                                'EC2_INSTANCE_ID':
                                instance.instance_id,
                                'S3_OUTPUT':
                                output_s3.s3_url_for_object(),
                                'S3_INPUT':
                                input_s3.s3_url_for_object()
                            })

这是一个相当表面的IDE问题,代码本身是有效的

python aws-cdk

评论


答:

8赞 gshpychka 3/24/2022 #1

这是 中的一个错误,CDK 用于将 TypeScript(编写 CDK 的语言)转换为 Python 的库。jsii

这是修复它的 PR。该修复程序已在 1.64.0 中发布

如果您使用的是 1.64.0 之前的版本,则可以使用强制转换来抑制错误:

import typing

...

function = lambda_.Function(
    self,
    "function",
    ...
    runtime=typing.cast(lambda_.Runtime, lambda_.Runtime.PYTHON_3_7)
)

或者只是附加到行的末尾,以禁用该特定行上的类型检查。# type: ignore

评论

0赞 Gillfish 6/27/2023
从 CDK 版本 2.85.0 开始,CDK 似乎正在使用 jsii 1.84.0。由于带有修复程序的 jsii 版本位于该版本的 CDK 中,我希望这不再被标记为类型错误,但 PyCharm 2023.1.3 专业版仍然会标记它。
0赞 gshpychka 6/27/2023
@Gillfish我猜这是由于 PyCharm 检查器工作原理的一些细节。我会在 jsii 存储库中打开一个问题