问题标签 [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 回答
444 浏览

python - Python Mypy 属性错误

我有一个 python3.4 项目,我最近决定使用 mypy 来更好地理解。

这段代码可以工作,但是用 mypy 检查会弹出一个错误:

错误 :

PyPreviewGenerator/file_converter.py:170: error: "ZipFile" has no attribute "filelist" (对应于这一行for line, info in enumerate(zz.filelist)::)

但是当我查看 ZipFile 类内部时,我可以清楚地看到该属性存在。 
那么为什么会发生错误呢?有没有办法解决它?

0 投票
0 回答
248 浏览

python - 使用 Mypy 存根文件与在函数定义中写入类型提示不同

我尝试在函数的定义中明确编写类型提示

运行python3.5 -m mypy test.py并收到以下消息

这是正确的。但是当我尝试使用存根文件时

我什么都没有。我看到了这个答案Using Mypy local stubs。所以我尝试import

没关系。我有

但是电话annotated(2, 's')还是一无所获。
那么我应该怎么做才能检查存根文件的非法操作呢?谢谢

0 投票
2 回答
7701 浏览

python - 一种将 NamedTuple 子类化以进行类型检查的方法

我有几个namedtuple共享某些领域的 s。我有一个接受这些元组的函数,并保证只与共享字段交互。我想在 mypy 中对此类代码进行类型检查。

代码示例如下:

当我在这段代码上运行 mypy 时,我得到一个可预测的错误:

mypy_example.py:20:错误:“DoSomething”的参数 1 具有不兼容的类型“BaseExtended”;预期的“基地”

有没有办法构建我的代码并保持 mypy 类型检查?我不能BaseExtended从继承Base,因为继承实现中有一个错误。NamedTuple

我也不想使用丑陋Union[Base, BaseExtended]的,因为当我尝试对 a 进行类型检查时,这会中断,List因为List[Union[Base, BaseExtended]]不等于mypy 关于变体/协变类型的魔法List[BaseExtended]

我应该放弃这个想法吗?

0 投票
1 回答
913 浏览

python - 无法使 Mypy 与 __init__.py 别名一起使用

以下是我的问题的最小示例:

模块或 __init__.py 的 Mypy 输出:

代码本身在 Python 2 和 Python 3 上运行良好。

0 投票
1 回答
897 浏览

python - 自引用 mypy 类型中的“无效类型”错误

我定义了以下类型:

当我运行时mypy,我收到以下错误:

这是重现错误的完整最小代码:

谢谢!

0 投票
0 回答
53 浏览

python - 使用 mypy 进行类型检查:具有公共字段的“结构”

我有几个共享类型字段的简单“结构”。我想定义一个在假设这些字段存在的情况下运行的函数,并且我想用 mypy 进行类型检查。

有一个封闭的 mypy 功能请求#3521,其中有一个我想要的简明示例:

不幸的是,似乎 NamedTuples 在任何时候都不允许使用此类功能(请参阅两个已关闭的问题:#3521#427

我之前问过一个类似的问题(A way to subclass NamedTuple for typechecking),我得到了一个很好的回应,指向PEP544的方向。虽然 PEP544 中描述的“协议”是一个好主意,但它是为适当的类设计的,对于共享几个字段的任务来说有点太多了。

如果有 NamedTuples 的替代品,请告诉我。

0 投票
4 回答
18864 浏览

python - python 3.5代码中的变量需要类型注释

mypy在我的 python 3.5 代码上使用,我收到了很多看起来像这样的消息:

文件:行号:错误:需要变量的类型注释

但是我读到了新功能,python 3.6因为它仅在以下位置引入了变量注释的语法python 3.6

PEP 484 引入了函数参数类型注释的标准,也就是类型提示。这个 PEP 为 Python 添加了用于注释变量类型的语法,包括类变量和实例变量......

如果我试图在python 3.5程序中为我的变量添加变量类型注释,它会抛出SyntaxError.

我应该怎么办?忽略此消息?更新到python 3.6? 为什么mypy像编写的那样编译我的代码python 3.6

0 投票
1 回答
14754 浏览

python - 如何在 mypy 中使用reveal_type

我读过我可以通过使用一个名为 的函数来揭示变量的类型reveal_type,但我找不到如何使用它或从哪里导入它。

0 投票
1 回答
257 浏览

python - 如何在 NamedTuple 上重载`+`

如何在 3.5 中为命名元组创建 plus 的自定义重载?我知道 3.6 中有一些新的语法,你能在 3.5 中做到吗?我也希望它通过 mypy 检查。

0 投票
2 回答
2633 浏览

python - mypy 错误:列表或元组文字应作为 namedtuple() 的第二个参数

我在 Python 3.5 中编写了这段代码:

当我运行 Mypy 类型检查器来分析此代码时,它引发了错误:

错误:列表或元组文字应作为第二个参数namedtuple()

我尝试向attributes变量添加类型注释:

但它并没有解决引发的错误。