mypy 在终端上完美运行,但是在预提交阶段运行时,我收到错误 Unexpected keywords argument for every property in my class
from attrs import define, field
@define(
frozen=True,
kw_only=True,
slots=True,
auto_detect=True,
order=False,
auto_attribs=True,
)
class MyClass:
a: str = field(default="")
b: str = field(default="")
def myMethod(self) -> Any:
return MyClass(a=self.a, b="b_value")
mypy 预提交失败:
错误:MyClass 出现意外的关键字参数“a”(行:return MyClass...)
错误:MyClass 出现意外的关键字参数“b”(行:return MyClass...)
.pre-commit-config.yaml:
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.11.2
hooks:
- id: mypy
args: ["--config-file", "mypy.ini"]
不要使用预提交中的 Mypy。 Mypy 需要查看代码使用的第 3 方软件包,即使它内置了不需要激活的 attrs 插件。
您可以非常轻松地测试它(我刚刚就这样做了):将 Mypy 与您的项目一起安装到 venv 中 and attrs 并从那里运行它:它通过了。