Pandas 的 Mypy/typeshed 存根

Posted

技术标签:

【中文标题】Pandas 的 Mypy/typeshed 存根【英文标题】:Mypy/typeshed stubs for Pandas 【发布时间】:2017-04-27 14:41:25 【问题描述】:

只是检查是否有人已经为 `pandas` 生成了一组可工作的 mypy/typeshed 存根。我天真地在本地 pandas 安装上运行了 stubgen,它产生了一些错误。我可以从我必须开始的事情开始,但希望其他人把球推得更远。 (GitHub 上没有什么明显的发现,尽管存根有一张旧票。)

【问题讨论】:

【参考方案1】:

到现在(2021 年 3 月),a dedicated pandas stub project 正在进行中。然而,它不是由 pandas 团队开发的(感谢@remeus 指出这一点)。 data-science-types 项目已弃用。 GitHub上they write:

⚠️这个项目大部分已经停止开发⚠️

pandas 团队和 numpy 团队都在将类型存根集成到他们的代码库中,我们看不出与他们竞争的意义。

NumPy 存根曾经在一个单独的项目中,但现在 have been merged 进入主 git repo:

这些存根已合并到 NumPy 中,所有进一步的开发都将在 NumPy 主存储库中进行。我们欢迎您的贡献!

【讨论】:

误导性答案,因为 pandas-stubs 不是由 pandas 开发的 @remeus 感谢您的更正。你对新版本满意吗?顺便提一句。如果您希望人们注意到/纠正他们的错误,@ 提及他们以便他们得到通知会很有帮助。【参考方案2】:

截至 2020 年 6 月,pandas 还没有存根,但在那个方向上有 is some progress。现在,您可以使用 data-science-types 包 (on GitHub),它为 pandasnumpymatplotlib 提供存根文件,尽管它还在进行中。

【讨论】:

【参考方案3】:

我还没有找到pandas 的存根。但是,有人 has created 一些 NumPy。

一个临时选项可能是根据 mypy 看到 pandas 对象的方式定义自定义类型。当我在reveal_type(df) 中包装一个DataFrame 对象并运行mypy 时,它显示识别的类型签名是

Union[builtins.dict[Union[builtins.str, builtins.int], builtins.dict[Any, Any]], Any]

但是,Series 对象的显示相同,因此不是很准确。

【讨论】:

以上是关于Pandas 的 Mypy/typeshed 存根的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 cy.intercept() 使用不同的存根存根两个请求?

如何使用 ArgumentCaptor 进行存根?

创建 C++ 类的存根版本

为啥在 REST 中没有存根?

模拟和存根有啥区别?

PHPUnit 中的模拟与存根