Dask 中的上游测试
作者:James Bourbeau
本文原文发布于 blog.coiled.io
Dask 与 PyData 生态系统中的其他库有深度集成,例如 NumPy、pandas、Zarr、PyArrow 等。为 Dask 用户提供良好体验的一部分是确保 Dask 在这些库发布新版本时继续与社区保持良好协作。本文将介绍 Dask 维护者如何积极主动地确保 Dask 持续与其周边生态系统协同工作。
每夜测试
Dask 有一个 专门的 CI 构建,每天运行一次 Dask 的常规测试套件,同时安装了几个库的未发布(每夜构建)版本。这使我们能够检查像 NumPy 或 pandas 这样的库中的最新更改是否破坏了 Dask 功能的某些方面。
为了在发生此类故障时提高可见性,作为上游 CI 构建的一部分,会自动开启一个问题,该问题提供测试失败的摘要并链接到相应失败的构建日志(这是一个示例问题)。
这降低了未能引起注意的上游构建失败的可能性。
问题如何发生以及如何修复
通常有两种不同的方式导致问题发生。要么是
- 某个库发生了有意的行为更改,需要在 Dask 中进行相应的兼容性更改(下一节有此情况的示例)。
- 某个库中的更改产生了意外的后果,导致 Dask 中出现故障。
当发生后一种情况时,Dask 维护者可以与其他库维护者合作解决意外的故障。这一切都发生在任何库推出新版本之前,因此不会有用户代码受到影响。
示例:pandas 2.0
这一过程的一个具体示例是最近发布的 pandas 2.0。这是一个主要版本发布,包含了重要的破坏性更改,例如移除了已弃用的功能。
随着这些破坏性更改合并到 pandas 中,我们开始在 Dask 的上游 CI 构建中看到相关的失败。Dask 维护者随后能够添加各种兼容性更改,以便 Dask 能够立即很好地与 pandas 2.0 协同工作。
致谢
特别感谢 Justus Magin 在 xarray-contrib/issue-from-pytest-log
GitHub action 上的工作。我们发现这对于在测试失败时轻松打开 GitHub 问题非常方便。
此外,感谢 Irina Truong (Coiled)、Patrick Hoefler (Coiled) 和 Matthew Roeschke (NVIDIA) 为确保 pandas 和 Dask 继续协同工作所做的努力。
博客评论由 Disqus 提供支持