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 的继任者,提供了一种简单的方法来封装代码、笔记本/仪表板、环境并在单个文件夹中运行命令。

BeeWare 

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

  • BeeWare 已经对所有支持的后端的所有小部件元素进行了大规模审核,并在此过程中扩展了测试和文档,以确保在所有情况下的一致行为。我们已经几乎完成了这项工作,目标是在第三季度初完成。
  • 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 显示和共享数据可视化等。

保持联系!

我们欢迎您对我们开源更新的发布提出任何反馈,因此请随时通过您喜欢的项目频道、社交媒体或 Anaconda Cloud 与我们联系。

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

下个季度见!

关于作者

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

与专家交谈

与我们的专家交谈,找到适合您 AI 之旅的解决方案。

与专家交谈