Mypy 版本0.761 和 0.812:类型语法要求存在显着差异。有办法绕过他们吗?

Mypy vers. 0.761 and 0.812: there are dramatic differences in type syntax requirements. Any way around them?

mypy 0.812 允许以下有用的类型提示:

def foo(a: str, b: str) -> str:
   return a + b

def bar(foo_fn: Callable[[str,str],str]) -> str:
    return foo_fn("foo","bar")

底线是:您几乎可以记住所有内容,但一些类型提示很有用,尤其是在涉及自定义 类 和作为输入传递的函数时。


但是,mypy 0.761 断言 Callable 括号中的项目是语法错误。

根据 mypy 0.812 的所有要求进行编译后,源代码中括号中的项目代表了重要且重要的工作量。

同时,一个新的依赖项迫使 poetry 只能安装 mypy 到 0.761 版本。


这意味着,到目前为止,除非我将构建系统从 poetry 更改为 setuptools 或其他在依赖性问题上比 poetry 更宽容的东西,否则该项目无法通过 QA。

平心而论,诗歌在解决依赖关系方面可能过于详尽,并且可能会暴露出错误和疏忽。


有没有办法控制或强制 mypy 版本 0.761(它的可用文档有限(我找不到))忽略类型注释语法错误,而不会在版本 0.812 恢复在线时禁用检查随着时间的推移更新?

无法告诉诗歌忽略依赖项或其版本约束。这是预期的行为,在 issue tracker 中进行了很多讨论。

你能做什么?

  • 联系包的维护者,让他更新依赖(这个包在运行时真的需要mypy吗?)
  • 问问自己,你是否需要这个包。有没有过时的替代品?
  • 分叉项目并更新其依赖项。