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

python - mypy AnyStr 在简单示例的分配中给出了不兼容的类型

给定以下课程:

我得到以下输出:

这个分配操作怎么会给出不兼容的类型?

0 投票
0 回答
803 浏览

python - python 3.6.2中的打字.NamedTuple,abc.NamedTuple mixins?

我是 python 新手(3.6.2 是我正在使用的版本)。

我目前正在将 DSL 实现从 Scala 移植(尝试移植)到 python,用于某些强制使用 python 的项目。

因此,我正在寻找一种方法来有效地编写不可变的类层次结构以支持使用 mypy 进行类型检查的方式来表示 ADT。

我第一次遇到macropy,它在python中复制scala案例类和模式匹配,但只兼容python 2.7.x(无论如何都不能与mypy一起使用)。

我做了一些更多的研究,然后输入了.NamedTuple 和 abc.ABC。所以现在我正试图找到一种方法来结合 typing.NamedTuple 和 abc.ABC 的好处,以便能够将 mixins 添加到 namedtuples。

我希望能够编写这种代码:

上面的代码使用 mypy 运行类型检查,但在 C2.m 调用中失败(方法调用只返回 None)。

所以我进一步搜索并找到了这个 collections.namedtuple + Mix-In 的配方:abc.namedtuple

我试图将配方从 collections.namedtuple 调整为 typing.NamedTuple,但无法理解配方中涉及的相当复杂和脆弱的 python 机器。有什么明显的方法可以使这项工作吗?

0 投票
2 回答
1865 浏览

python - mypy 找不到模块“保管箱”

我有一个小的代码库来备份 Dropbox Business 文件,并且正在尝试使用mypy来帮助我使用相当 unpythonic 的Dropbox Python SDK

我已经安装了 mypy,它正在工作。

但是,mypy 会针对以下行发出警告:

警告是“找不到名为‘dropbox’的模块”。

似乎 Dropbox 的 SDK 生成器,称为 Stone,应该生成兼容的存根文件(在这种情况下将被称为dropbox.pyi)。

但是没有dropbox.pyiin site-packages/dropbox,mypy 会在其中寻找它。

如何对dropbox包进行类型检查?

提前致谢。

版本:

  • Python 3.6 64 位 (Anaconda)
  • 操作系统:Windows 10 专业版 64 位
  • 我的 0.521
  • 保管箱 SDK 8.0.0
0 投票
2 回答
6578 浏览

python - mypy:如何定义泛型子类

我有一个queue.Queue像这样的子类:

我正在尝试使用mypy进行静态类型检查。在这种情况下,SetQueue 应该采用通用对象 T。这是我迄今为止的尝试:

mypy 在类定义行上抛出一个警告,说“缺少泛型类型的类型参数”。

我认为我需要一个Generic[T]地方,但我所做的每一次尝试都会引发语法错误。文档中的所有示例都显示了从任何其他对象继承Generic[T]但不从任何其他对象继承。

有谁知道如何定义 SetQueue 的泛型类型?

0 投票
0 回答
404 浏览

python - 本地修补缺少的 Python 类型注释?

Python 现在支持类型提示,所以...耶!这似乎是避免一些更晦涩的运行时错误的好方法。

可悲的是,第三方库支持仍然是一个问题。虽然 mypy 也使用了 typeshed 项目部分解决了这个问题尝试移植我的一些代码以使用类型提示时,由于缺少存根,我遇到了问题。

例如

会很好地工作,但 mypy 会产生虚假的错误消息

因为存根当前不完整。

对于一个更大的项目,从 typeshed 下载存根,添加缺失的条目,甚至提交相应的拉取请求是一件轻而易举的事。

但是有什么方法可以在快速而肮脏的场景中修补缺失的信息吗?

糟糕的解决方法

我能想到的最好的是

这可以消除错误,但也会禁用items之后使用变量的类型检查。例如items[0] + 1,不会再引起警告。

为了保留类型检查,可以使用

但这似乎很老套;它还必须在.xpath使用该方法的任何地方重复。

从 2017-09-12 更新:或者可以使用语法

0 投票
1 回答
1114 浏览

python-3.x - Bytes-like object 或 Buffer 类型注解

如何注释类似字节的对象或缓冲区?

缓冲区协议没有接口,但我希望在我的函数中接受所有缓冲区。

我不介意它是否只是 mypy 特定的。

0 投票
1 回答
3254 浏览

python - Python类型注释:将元组中的项目标记为可选

我有一个返回 2 元组但可选的 3 元组的函数。我如何用类型注释来描述这个?

例如:

我可以像下面这样使用 Union,但它看起来很乱。

0 投票
1 回答
379 浏览

python - Mypy:寻找平均函数的完美签名

我正在尝试为以下函数(Python 3.6,mypy 0.521)提出完美的函数签名:

这段代码的好处在于,它可以与 , , 的可迭代对象一起工作,并产生正确的结果,int但也可以为. 尝试添加签名时会出现问题。我尝试了以下方法:floatcomplexdatetime.timedelta

但是现在,调用者需要转换结果。

这失败了,因为T不支持加法或除法。

失败是因为int / intfloat; using//几乎对其他所有内容都给出了错误的结果。也很糟糕,因为代码应该适用于其他类型,只要支持加法和除法。

这几乎是完美的,但同样,如果有人后来决定向它扔四元数,mypy 会抱怨。

...然后我也尝试了一些东西,abc但这typing.overload让我无处可去。

最优雅的解决方案是mypy --strict什么?

0 投票
1 回答
538 浏览

python - 从与 TypeVar 关联的具体类型中获取内部类型

我正在使用pythonmypy中的typing模块。想象一下我有一个泛型类型:

但是,我想在与 TypeVar 关联的具体类型中获取另一种类型,如下例所示:

我收到一条错误消息,说TypeVar没有成员Iterator。有没有另一种方法来重新制定这个,所以我可以将一种类型与另一种类型联系起来?

谢谢你。

0 投票
2 回答
1509 浏览

python - mypy:“__getitem__”的签名与超类型“序列”不兼容

我有一个继承自MutableSequence这样的类:

mypy抱怨说Signature of "__getitem__" incompatible with supertype "Sequence"

Sequence中,该方法定义为:

那么,问题出在哪里,为什么mypy对我的实现不满意?