问题标签 [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.
python - 引号中的 mypy 显式类型提示仍然给出未定义的错误
我正在尝试做以下事情:
我无法导入节点,因为我会得到一个循环。所以我用这里提到的引号写它 http://mypy.readthedocs.io/en/latest/common_issues.html#import-cycles 但我仍然收到以下错误
有什么解决办法吗?
谢谢!
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
python - 如何使用 mypy 对 next() 的用法和 groupby 结果进行类型检查?
我正在为我的项目中的一些 utils 函数尝试 mypy,但是我在使用这个结合了 groupby 和 next 的函数时遇到了问题。
这是功能代码:
我不断收到这个错误,因为它无法推断type argument 1 of "next"
:
我想这意味着它无法推断g
这里的类型,对吧?
我很难理解这是否是我的类型注释或groupby
.
作为参考,这是类型注释groupby
:
所以这意味着,“groupby 接受一个 T 类型的迭代器,并返回一个包含两项的元组迭代器:(一个 T 类型的项,一个 T 类型的对象的迭代器)”。对我来说看起来不错,但是 mypy 应该能够推断出next
as的第一个参数Iterator[Tuple[Any, Iterator[Any]]]
,对吧?
我错过了什么?
python - 使用 yield 的 Python 函数的正确类型注释
在阅读了 Eli Bendersky关于通过 Python 协程实现状态机的文章后,我想...
- 查看他在 Python3 下运行的示例
- 并为生成器添加适当的类型注释
我成功地完成了第一部分(但没有使用async def
s 或yield from
s,我基本上只是移植了代码 - 所以任何改进都是最受欢迎的)。
但我需要一些协程类型注释方面的帮助:
这运行正常...
...还有类型检查:
但我很确定我可以做得比只Generator
在类型规范中使用基类更好(就像我为Callable
. 我知道它需要 3 个类型参数 ( Generator[A,B,C]
),但我不确定它们在此处的具体指定方式。
欢迎任何帮助。
python - Mypy:没有签名推断?
看起来 Mypy 没有做任何事情来推断签名。那是对的吗?例如:
当我这样做时没有抱怨:
Mypy 将推断f
(如果--check-untyped-defs
打开)主体内的表达式。我想知道使用它来做出和应用关于签名的推断是否有意义。(如果没有,为什么不呢。)
python - Mypy Python 2 坚持使用 unicode 值而不是字符串值
Python 2在某些情况下会隐式转换str
为。根据您尝试对结果值执行的操作,unicode
此转换有时会抛出一个。UnicodeError
我不知道确切的语义,但这是我想避免的。
是否可以使用除此之外的其他类型unicode
或类似于--strict-optional
(http://mypy-lang.blogspot.co.uk/2016/07/mypy-043-released.html)的命令行参数来导致程序使用这种隐式转换无法进行类型检查?
在此示例中,只有函数returns_string_not_unicode
无法进行类型检查。
我希望他们两个都无法进行类型检查。
编辑:
type: () -> byte
似乎被以同样的方式对待str
python - 如何在 mypy 中使用 typeshed?
我克隆了 typeshed但我不知道如何告诉 mypy 使用它包含的类型提示,我在 mypy --help 中看不到任何选项。mypy repo 确实包含对 typeshed repo 的引用,但安装它的 pip 不会下载它。
python - 我应该为方法“self”参数使用什么类型?
如果我mypy
在我的项目中使用,我的方法 self 对象应该被赋予什么类型?