Anaconda 2022 年第四季度开源综述

实质性和有影响力的开源创新是 Anaconda 致力于提供工具以更快地开发和部署安全的 Python 解决方案的核心。为了捕捉和传达我们的团队对各种开源项目的许多持续贡献,我们现在在我们的博客上定期提供相关新闻汇总。


和往常一样,Anaconda 的开源软件 (OSS) 团队在过去几个月里非常活跃!在我们新的季度 OSS 综述的第一版中,我将重点介绍我们最大的一些开源贡献以及一些较小但仍然非常有趣的努力。我还将简要介绍未来几个月的情况。

注意:请参阅最近的 PyScript 文章,了解有关该特定项目的一些更新,因为此处不再赘述。

按开发团队划分的亮点

Anaconda 有许多不同的团队从事开源工作,每个团队执行各种各样的任务。下面我将介绍我们的一些核心工作和最近的里程碑。请注意,分项列出仅仅是为了提高可读性;实际上,我们许多人跨部门工作。

Dask 和数据访问

  • Awkward Array 项目为不适合普通数组或表的数据(嵌套和可变长度的“JSON 式”数据)提供向量化(快速!)数据处理,所有这些都使用熟悉的 NumPy 语法。由于这直接针对大数据,因此在集群上并行和分布式地进行处理是有意义的。Dask-awkward 正是这样做的,并且将与本博客文章和 Awkward V2 大致同时发布。该库将完整的 Awkward API 带到大型分布式数据,并已准备好投入通用使用。

  • 在相同的努力下,我们创建了 awkward-pandas,您可以在其中混合嵌套、可变长度数据和普通平面列。我们通过我们自己的新扩展类型和用于转换为 Python/pandas 原生类型和从 Python/pandas 原生类型转换的便捷方法,将 Awkward 的强大功能和速度带入 pandas API。这包括集成到 JSON 和 Parquet 加载/写入机制中。它在 PyData Global 上作为 alpha 版本发布,并且 dask-awkward-pandas 的工作正在进行中。

  • 用于数据访问和编目的 Intake 库已经成熟且稳定。最近,我们投入了新的精力来振兴和推进该项目。特别值得注意的是,Intake 图形用户界面 (GUI) 将很快提供新功能——与 hvPlot 的浏览器集成,以及在动态编辑和构建数据源、绘图和目录文件时提供更多交互性。

  • fastparquet 可能主要处于维护状态,但我们仍在改进它。2022.11.0 带来了对可空类型、架构演变和就地元数据更新的速度提升。

  • 在广泛参与 python-graphblas(将优化的图形处理引入 Python)之后,我们专注于完善该库并为社区提供广泛的文档。

Jupyter

  • 虽然一些用户尚未过渡到 JupyterLab(或即将推出的 Notebook V7),但 Anaconda 已介入以恢复维护“经典”Jupyter Notebook 代码库。这使得 Jupyter Notebook 6.x 的几个新的安全和错误修复版本得以发布。

  • 请参阅这篇博客文章,了解 Jupyter 6.5 版本的发布,它是通往 Notebook V7 的过渡点,但具有许多更新和稳定性修复。

  • 为了实现对经典 Notebook 的长期支持,前端代码已移至 nbclassic 软件包,该软件包可以与 JupyterLab 和未来的 Notebook V7 共存于环境中。

  • 该团队一直在与更广泛的 Jupyter 社区互动,以了解他们的需求,并将在 2023 年研究文档和功能,以简化扩展和扩展作者向新的基于 JupyterLab 的系统过渡。

  • 最后,作为一个技术人员感兴趣的点,我们将 nbclassic 中的所有基于 Selenium 的测试转换为 Playwright,这是一个主要的开发工作,但显着提高了测试套件的可靠性。

HoloViz

  • Bokeh 3 是底层交互式图形库的主要版本,整个 HoloViz 堆栈都依赖于它。特别值得注意的是,布局系统被重写以重用更现代的浏览器原语,而不是在内部处理大小调整和放置,这应该可以更好地与页面/应用程序中的其他图形组件互操作。

  • Bokeh 的更改允许(并要求)在整个相关堆栈中进行工作,从而在过去几周内发布了以下版本
    • Panel 的交互式小部件集

    • HoloViews 的交互式绘图生成引擎

    • GeoViews 的映射和投影扩展

    • Datashader 的高性能服务器端数据点聚合器

    • Lumen 的交互式仪表板构建器

  • 我想特别强调 Panel 0.14,它与 PyScript 完全集成,因此您可以在没有服务器的情况下运行交互式 Python 数据可视化应用程序,并提供浏览器(与前面提到的 Intake GUI 结合使用)以交互方式构建数据帧数据的视图。

Conda

  • Conda 今年变得更加开放和社区驱动。例如,请注意 增强建议 流程,以及与 mamba 的持续对话和协作。

  • Conda 转向日历版本控制和定期发布周期,从 22.x 版本开始。

  • 插件 现在由 conda 的架构支持,因此开发人员可以创建和提供新功能,而无需向主存储库添加代码。

BeeWare

  • BeeWare 是一个用于编写 Python 应用程序的工具集合,这些应用程序可以在移动设备、桌面和 Web 平台上以原生外观和风格运行。BeeWare 项目维护着自己的 博客,其中包含每月更新、路线图和其他新闻。快速浏览一下就会发现最近有很多活动,尤其是在构建/部署系统 Briefcase 方面。

  • Chaquopy 是一个用于在 Android 上部署 Python 的独立工具,已经 开源 并并入 Briefcase。

  • Android 和 iOS 的二进制软件包已经发布,因此现在您可以在移动 Python 应用程序中包含 NumPy 和 Matplotlib 等流行的库。

  • Python 3.11 的构建系统在可用后立即准备就绪。

  • 测试基础设施的完全重写正在进行中。Briefcase 现在能够在应用程序模拟器环境中运行测试套件,并且此功能正在用于为 Toga GUI 工具包实施全面的跨平台测试套件。

Numba

  • Numba 是一个即时 (JIT) 编译器,用于优化 Python 代码,以便在 CPU 和 GPU 后端上运行数值算法。本季度进行了大量工作来支持 Python 3.11 并升级到 LLVM 14。这些任务正在进行中,但应该很快就会在开发分支中落地。

  • 为了准备在 2023 年大力推进 Numba 的模块化,以便在其他需要编译器组件的项目中更轻松地重用,我们一直在推进几项概念验证工作。我们将在未来一年看到这些组件并入 Numba 或潜在的新项目中。

  • Numba 团队一直在对字节码分析前端进行重大重写,以更好地处理每个 Python 次要版本带来的快速发展的字节码更改。这项工作应该有助于我们更快地为新的 Python 版本推出 Numba 更新,并为未来的其他编译器增强功能提供支持。预计这将在 2023 年第一季度某个时候在 Numba 中落地。

  • 我们还一直在努力改进 Numba 扩展 API 的内部使用,这使得 compute unified device architecture (CUDA) 目标的功能得到增强,并减少了代码大小。这项工作还应允许在未来实现更一致的数学行为。

其他

spatialpandas 到 Awkward

spatialpandas 是一个用于将几何对象作为 pandas 数据帧的一列进行处理的库,其中包含其他普通列以及用于聚合和可视化的视图。在我们对用于 Dask 和 pandas 的 awkward-array 进行工作之后,我们意识到 spatialpandas 可以使用这些工具。特别是,多边形和线可以表示为可变长度的点数组,每个点由两个或多个数字组成。这正是 Awkward 处理的数据结构类型。初步实验表明,我们可以用调用 Awkward(通过 awkward-pandas)中经过良好测试的现代代码来替换 spatialpandas 中的许多复杂的临时遗留代码,并且还可以从更改中获得相当大的速度提升。这是一个很好的例子,说明如何将我们自己新兴的工具用于各种用例,我们将在未来几个月内进一步开发此功能。敬请关注!

Kerchunk

Kerchunk 是一个库,用于从多个其他几种可能格式的数据集中创建虚拟数据集,并在不复制或重新格式化原始文件的情况下提供云原生数据访问的优势。它已经存在一段时间了,但本季度它受到了新的关注和努力,因此我们能够浮现出其他功能,例如

  • 整合目标文件中的许多附近读取以减少调用次数

  • 使用 Dask 的树归约方案扫描文件

  • 用于 geotiff 的坐标创建实用程序

  • 当目标未压缩时自动提取较小的块

随着这种新的推动,预计在未来六个月内会有更多关于该项目的消息。

下个季度见!


关于作者

Martin Durant 是一位前天体物理学家,拥有多年的科学研究经验。他还曾在医学影像领域工作,构建 AI/ML 管道和研究平台。在广告技术领域短暂担任数据科学家之后,Martin 加入 Anaconda 从事 PyData 教育工作。他现在领导着多个开源 PyData 项目,专注于数据访问、格式和并行处理。

与专家交流

与我们的专家之一交流,为您的 AI 之旅找到解决方案。

与专家交流