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

python - 引号中的 mypy 显式类型提示仍然给出未定义的错误

我正在尝试做以下事情:

我无法导入节点,因为我会得到一个循环。所以我用这里提到的引号写它 http://mypy.readthedocs.io/en/latest/common_issues.html#import-cycles 但我仍然收到以下错误

有什么解决办法吗?

谢谢!

0 投票
4 回答
120655 浏览

python - 如何在类型提示中指定函数类型?

我想在我当前的 Python 3.5 项目中使用类型提示。我的函数应该接收一个函数作为参数。

如何在类型提示中指定类型函数?

我检查了PEP 483,但在那里找不到函数类型提示。

0 投票
1 回答
689 浏览

python - 使用打字模块时如何检查类型兼容性?

我正在使用 Python PEP484 类型提示为我用 Python 编写的 DSL 编写类型检查器。如果我有一个函数期望T其参数之一为 type ,并且使用 type 的表达式调用它S,我如何检查调用是否有效?使用issubclass(S, T)够了吗?如果是这样,为什么mypy要进行如此复杂的is_subtype检查?还是我应该只使用该mypy版本?

编辑:这是一个澄清我的意思的例子。DSL 有一个功能定义为:

然后用户键入一个表达式,该表达式被解析为语法树,其分支可能是:node = OperatorNode('+', Literal([5.0]), Variable("abc"))。我们还不知道abc变量的值,但是列表永远不能与 一起使用+,所以我想提出 aTypeError来提醒用户。

如果我这样做issubclass(typing.List[float], var),那会给我 False,所以我可以立即提出错误。我的问题是,当我构建 DSL 时,是否可以保证此检查适用于各种情况,或者我是否需要使用更复杂的检查,例如mypy

0 投票
1 回答
321 浏览

python - 如何使用 mypy 对 next() 的用法和 groupby 结果进行类型检查?

我正在为我的项目中的一些 utils 函数尝试 mypy,但是我在使用这个结合了 groupby 和 next 的函数时遇到了问题。

这是功能代码:

我不断收到这个错误,因为它无法推断type argument 1 of "next"

我想这意味着它无法推断g这里的类型,对吧?

我很难理解这是否是我的类型注释或groupby.

作为参考,这是类型注释groupby

所以这意味着,“groupby 接受一个 T 类型的迭代器,并返回一个包含两项的元组迭代器:(一个 T 类型的项,一个 T 类型的对象的迭代器)”。对我来说看起来不错,但是 mypy 应该能够推断出nextas的第一个参数Iterator[Tuple[Any, Iterator[Any]]],对吧?

我错过了什么?

0 投票
3 回答
19902 浏览

python - 使用 yield 的 Python 函数的正确类型注释

在阅读了 Eli Bendersky关于通过 Python 协程实现状态机的文章后,我想...

  • 查看他在 Python3 下运行的示例
  • 并为生成器添加适当的类型注释

我成功地完成了第一部分(但没有使用async defs 或yield froms,我基本上只是移植了代码 - 所以任何改进都是最受欢迎的)。

但我需要一些协程类型注释方面的帮助:

这运行正常...

...还有类型检查:

但我很确定我可以做得比只Generator在类型规范中使用基类更好(就像我为Callable. 我知道它需要 3 个类型参数 ( Generator[A,B,C]),但我不确定它们在此处的具体指定方式。

欢迎任何帮助。

0 投票
1 回答
149 浏览

python - Mypy:没有签名推断?

看起来 Mypy 没有做任何事情来推断签名。那是对的吗?例如:

当我这样做时没有抱怨:

Mypy 将推断f(如果--check-untyped-defs打开)主体内的表达式。我想知道使用它来做出和应用关于签名的推断是否有意义。(如果没有,为什么不呢。)

0 投票
1 回答
738 浏览

python - Mypy Python 2 坚持使用 unicode 值而不是字符串值

Python 2在某些情况下会隐式转换str为。根据您尝试对结果值执行的操作,unicode此转换有时会抛出一个。UnicodeError我不知道确切的语义,但这是我想避免的。

是否可以使用除此之外的其他类型unicode或类似于--strict-optionalhttp://mypy-lang.blogspot.co.uk/2016/07/mypy-043-released.html)的命令行参数来导致程序使用这种隐式转换无法进行类型检查?

在此示例中,只有函数returns_string_not_unicode无法进行类型检查。

我希望他们两个都无法进行类型检查。

编辑:

type: () -> byte似乎被以同样的方式对待str

0 投票
1 回答
3781 浏览

python - mypy“无效类型”错误

我正在尝试在当前项目中实现类型注释,并且从 mypy 收到我不理解的错误。

我正在使用 Python 2.7.11,并在我的基本 virtualenv 中新安装了 mypy。以下程序运行良好:

但运行mypy --py2 -s mypy_issue.py返回以下内容:

上述类型似乎在Typeshed ... mypy文档中说“Mypy 合并了 typeshed 项目,其中包含 Python 内置函数和标准库的库存根。” ...不确定“合并”是什么意思 - 我需要做一些事情来“激活”或提供通往 Typeshed 的路径?我需要在本地下载和安装(?)Typeshed 吗?

0 投票
2 回答
4776 浏览

python - 如何在 mypy 中使用 typeshed?

我克隆了 typeshed但我不知道如何告诉 mypy 使用它包含的类型提示,我在 mypy --help 中看不到任何选项。mypy repo 确实包含对 typeshed repo 的引用,但安装它的 pip 不会下载它。

0 投票
1 回答
50 浏览

python - 我应该为方法“self”参数使用什么类型?

如果我mypy在我的项目中使用,我的方法 self 对象应该被赋予什么类型?