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

问题描述

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 只能安装 0.761 版本的 mypy。


这意味着,截至目前,项目无法通过 QA,除非我将构建系统从诗歌更改为设置工具或其他在依赖问题方面比诗歌更宽容的东西。

平心而论,诗歌在其依赖性解析方面可能过于详尽,并且可能会暴露自己的错误和疏忽。


有没有一种方法可以控制或强制 mypy 0.761 版本(它的可用文档有限(我找不到))忽略类型注释语法错误,而不会在 0.812 版本随着软件包更新而重新上线后禁用检查时间?

解决方法

没有办法告诉诗歌忽略依赖项或它的版本约束。这是一种预期行为,并在 issue tracker 中讨论了很多。

你能做什么?

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