Anaconda 2023 年第二季度开源综述

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

开发组亮点

Anaconda 有许多不同的团队从事开源工作,每个团队执行各种各样的任务。下面我将介绍我们的一些核心工作和最近的里程碑。请注意,分成要点只是为了便于阅读;实际上,我们中的许多人跨部门工作。

Dask 和数据访问

查找、读取和写入任何格式或位置的数据 → 此处

  • Dask-awkward 已从最初的高能物理领域迅速扩展到超大规模计算操作。我们现在确保仅加载实际需要的列,即使计算图有多达数千层。这将很快意味着仅加载 JSON 模式的子集即可进行矢量化分布式处理,从而节省模式所有叶节点的内存存储,而这些叶节点将被简单地丢弃。这将是 Python 中嵌套/结构化数据处理的真正首创。
  • Intake 正在进行大规模内部重写!这需要一段时间,但目的是提出一种更简单、更灵活的设计。有了这个,我们将为用户定义他们自己的数据以上传到 Anaconda.cloud 并与朋友、同事甚至更广泛的世界分享做好准备。这项工作的主要动机有两个:
    • 没有人愿意编写原始 YAML 只是为了编码他们的数据依赖项。如果我们不想要单独的数据策展人,我们需要消除这个障碍。
    • 与 Intake 诞生时不同,现在有很多方法可以读取您的数据,即使您需要集群/分布式系统。因此,我们将“数据”定义(例如,“它是此 URL 上的 CSV”)与各种读取器的参数分离。因此,我们可以在一个地方定义如何使用 Dask、Spark、Ray、Polars、DuckDB 等读取,并允许用户选择哪种适合他们的日常工作。
  • 文件系统规范 (fsspec) 像往常一样,一直在快速开发和发布周期。特别令人感兴趣的是,批量操作(上传/下载/复制/删除)的测试受到了很多关注,我们现在有一个测试套件,确保许多后端与预期行为的一致性。接下来,我们将重写文件缓存层,使其灵活且可插拔,以便用户可以选择如何存储文件名以及何时删除旧副本或由于新的上游版本而刷新文件。
  • Kerchunk 最终完全支持以优化的 Parquet 格式存储引用——现在也支持写入模式。这意味着您可以扫描数千个原始数据文件,以生成整个数据集的聚合“逻辑”数据集(非常适合并行云原生访问),同时保持低内存开销和对数据任何部分的快速随机访问速度。接下来,我们将专注于索引到压缩文件(gzip、ZIP、bzip2 和 zstd)并在新数据文件到达但其他文件未更改时更新引用集。

Jupyter

用于 Python 和其他语言的浏览器内交互式开发环境 → 此处

  • 该团队发布了 nbclassic 的 1.0.0 版本,该软件包允许“经典” Jupyter Notebook(相当于 Notebook 6.5)与 JupyterLab 或 Notebook 7 一起安装并在环境中使用。我们还发布了 jupyter-nbextensions-configurator 的版本,它修复了 nbclassic 的一些兼容性问题。
  • Notebook 版本 7 正处于第二个候选版本阶段,我们一直在帮助修复错误和处理功能请求,为下一个重大版本做准备。
  • 我们对 jupyter-collaboration 感到兴奋,并一直在努力创建一个压力测试框架,以识别大规模出现的同步错误。
  • 为了改进 Jupyter 文档,我们还进行了许多其他工作,我们试图使扩展开发人员体验更好。

HoloViz

PyData 的交互式可视化和绘图 → 此处

  • Panel 1.0 和错误修复补丁已发布
  • 我们的 数据应用竞赛 正在顺利进行中,我们很快将评估参赛作品。感谢社区的所有兴趣和迄今为止的优秀贡献!
  • Panel 部署现已在 Anaconda.cloud 上线。查看这个按需培训以了解更多信息。

Conda 

Python(和所有事物)包管理器 → 此处

  • conda 团队已正式启动 conda.org!该网站将成为整个 conda 社区的家园。它带有自己的博客页面,其中包含更多您可能感兴趣的文章。我们仍在非常积极地开发它,并欢迎任何贡献。这是 conda 成为具有交互标准和开放管理的更广泛社区的更大过程的一部分。
  • Conda-project 正在成为 anaconda-project 的继任者,提供了一种简单的方法来封装代码、notebooks/仪表板、环境以及在单个文件夹中运行命令。

BeeWare 

在任何平台上运行 Python 应用,包括移动设备 → 此处

  • BeeWare 一直在对所有受支持后端的全部 widget 元素进行大规模审核,在此过程中大大扩展了测试和文档,以确保在所有情况下行为一致。我们几乎完成了这项工作,目标是在第三季度初完成。
  • Web 后端一直在持续改进,特别是对于 Pyodide 兼容性,并且正在赶上移动和桌面实现。
  • Briefcase 内跨平台测试的更新允许在启动各种后端上的完整 CI 之前评估覆盖率。

Numba 

使用 JIT 编译加速您的 Python 数值代码 → 此处

  • Numba 0.57.00.57.1(以及 llvmlite 0.40.0 和 0.40.1)已发布。这些是巨大的版本,增加了对 Python 3.11、NumPy 1.24 和 LLVM 14 的支持。
  • 在对 Numba 的核心内部结构进行大量重构工作之后,编译器链的替代前端终于可用了,如果对于感兴趣的测试人员来说是实验性的(请参阅 此处)。此更改提供了一种中间代码,描述了原始 Python 的循环和分支结构,从而消除了 Python 字节码的具体细节。从长远来看,它将为 Numba 机器的其余部分提供更稳定的表示形式,更容易被外部人员接受,甚至对非 Numba 用例也很有用。
  • Python 3.12 即将到来,注意力将转移到支持它,以便 Numba 可以在此新 Python 版本公开发布后尽快使用。以上几点对于快速完成这项工作应该非常有帮助!

其他

  • 我们鼓励您注册即将进行的直播培训:使用 PyScript 进行数据可视化。了解 PyScript 的基本功能和应用、PyScript 如何用于显示和共享数据可视化等等。

保持联系!

我们欢迎您对我们的 OSS 更新交付提出任何反馈,因此请随时通过您首选的项目渠道、社交媒体或 Anaconda Cloud 与我们联系。

您可能还对我们在博客上介绍的其他一些最新软件活动感兴趣

下个季度再见!

关于作者

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

与专家对话

与我们的专家之一对话,为您的 AI 之旅寻找解决方案。

与专家对话