问题标签 [mypy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1297 浏览

python - 在 Python 中使用适当的类型提示对序列进行子类化

我正在尝试在 Python 中实现一种自定义序列类:

现在我想检查mypy是否知道元素MySequence是类型的项目T

所以它失败了:mypyfoo. 普通Sequence作品同样的例子:

如果我尝试将类型注释添加到__getitem__实现中,则会出现另一个错误:

我也试过

asidx可以是切片,在这种情况下,我的代码将返回一个序列而不是一个元素。它会失败并显示相同的消息。

正如我在上一个问题中所讨论的那样,对此类问题进行了公开讨论

但是,我仍然想知道,是否可以创建自定义序列类型,允许mypy提取有关其项目类型的信息,就像在我的示例中一样?

0 投票
0 回答
363 浏览

python - mypy 可以接受继承属性的注释吗?

我有一个奇怪的情况,添加显式类型提示似乎会使 mypy 失败。

此代码验证(Python 3.6.1,mypy 0.540):

但告诉 mypy 什么属性返回失败

相关的,我认为,离开注释也会因多重继承而失败,无论哪种组合(两者,任一,无)都被注释:

任何想法为什么,或者如何改变?

0 投票
2 回答
1274 浏览

python - 存根文件中的 Mypy 泛型类

我正在尝试将类型存根添加到具有名为 的集合类的库中,该集合类List本质上是对 builtin 的包装器list。出于所有实际目的,您可以假设它看起来像这样:

现在,在我的存根文件中,library.pyi我有:

如果我执行以下操作,我希望打字失败:

但是mypy client.py以 0 退出。此外,python client.py失败以TypeError: 'type' object is not subscriptable.

我的理解是类型提示对运行时没有任何影响。那显然是错误的。有人可以纠正我关于类型提示如何工作的心理模型吗?

此外,有什么可以得到我想要的(即mypy client.py失败)?

0 投票
1 回答
901 浏览

python - mypy 泛型子类导致类型不兼容

我正在玩弄带有类型提示的幺半群。为此,我写了:

在子类中使用它时,例如

我明白了error: Argument 1 of "append" incompatible with supertype "Monoid"。由于List是 的正确子类Monoid,我希望它能够输入。我究竟做错了什么?

0 投票
4 回答
7551 浏览

pycharm - 试图将 mypy 添加到 PyCharm

尝试使用我的 PyCharm Professional 2017.2 设置 mypy。但它不起作用。我还想在一个特定文件和整个项目上设置 mypy 检查,有些人可以分享他们在 PyCharm 中配置 mypy 的方式。

0 投票
1 回答
655 浏览

python - 尝试运行 mypy 时弹出“OSError:[Errno 2] No such file or directory”

你好堆栈溢出用户,

我很难让 mypy 与 Popen 一起正常工作。本质上,我正在编写一个使用 mypy 但似乎无法在我的构建机器上获得有效输出的测试套件。

有问题的行如下:

p = subprocess.Popen(['mypy'] + extra_args + python_files, env=my_env, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIP)

extra_args指定缓存目录和回溯,并且python_files是要测试的有问题的文件。我相当有信心这些论点都不是问题,因为我已经玩过这些并且没有取得任何进展。

该文件位于 git repo 中,我已将其克隆并放在构建盒中。在本地这不是问题——我得到有效的 mypy 输出指示错误。但是,在我的构建机器上,我得到了OSError: [Errno 2] No such file or directory错误。完整的错误信息如下:

我已经尝试添加shell=True,但这导致所有 mypy 错误开始被抑制,并且被认为是错误的样式/安全问题。

我的猜测/想法是 mypy 可能不在 popen 在没有外壳的情况下使用的路径中,但我真的不确定。

0 投票
0 回答
266 浏览

python - 类型提示:函数需要具有以下强制键的 dict

mypy是否有可能在Python3.6+它们的任何扩展中指定我的函数可以将任何 dict 作为参数,只要它具有特定的键?如果有一个假设类型Record For eg

因此,静态分析应报告以下内容

0 投票
1 回答
953 浏览

python - Python/MyPy:如何注释可以返回几种不同类型对象之一的方法?

我应该如何注释可以返回多种不同类型对象的方法的返回类型?

具体来说,这是我遇到问题的方法:

我试过Union[shelf.Sheet, guillotine.Guillotine, maximal_rectangles.MaximalRectangle]了,但是 MyPy 给了我很多错误,我稍后在我的代码中使用了 _bin_factory 方法。这些错误似乎围绕着这样一个事实,即 Union 中的所有三种对象类型都具有彼此不同的属性。

0 投票
1 回答
2373 浏览

python - 即使测试了所有案例,MyPy 也会给出错误“缺少返回语句”

我收到一个 MyPy 错误“缺少返回语句”,即使我检查了函数内的所有可能情况。

例如,在下面的代码中,MyPy 仍然给我一个错误"9: error: Missing return statement",即使color只能是Color.RED, Color.GREEN, or Color.BLUE,我测试了所有这些情况!

0 投票
1 回答
848 浏览

python - 是否可以将 Python 中的所有类型提示/检查基础设施分成 .pyi 文件?

在 Python 3 中,类型提示允许mypy等第三方工具检查类型;但是,我发现类型检查语法与程序注释一起有点难看。使用 mypy 可以将存根函数和方法放入与.pyi文件相同的目录中的单独文件中.py.pyi是否可以在文件的等效文件中定义所有类型相关的语法.py?因此,例如,您可以.pyi使用所有类型语法在文件中定义变量、方法、返回类型等,但不理会主.py代码?