关闭

2018年10月10日

PyPI可用于软件遗产

PyPI徽标,包括文本“Python包索引”

我们很高兴与大家分享包索引(PyPI)现在与软件遗产:所有PyPI包都已已存档现在正在跟踪PyPI,以便在新的Python包发布可用时及时归档。

PyPI是一个由志愿者运行的近150万个Python包的存储库。所有这些包现在也可以从Software Heritage(SWH)获得。

SWH正在建立亚历山大图书馆的源代码,认识到软件的文化遗产、源代码为工业提供的有用性以及开放和保存研究的必要性。为了在software Heritage Archive中代表所有公开可用的软件,SWH正在逐步扩展其范围:在几个主要的代码托管平台(例如GitHub)和逐步淘汰(Google code、Gitorious)之后,现在是时候扩大包分发的覆盖范围了。

在摄入PyPI、SWH之前Debian的集成源程序包。构建必要的基础设施以支持将PyPI添加到存档中,这将使将来添加对其他包管理器的支持变得更加容易。

事实上,将Archive构建成我们想要的样子意味着支持人们相互共享代码的所有方式。

开源社区的成功取决于人们对社区的回报,这也是我们对PyPI感到兴奋的原因之一。SWH主要是用Python编写的,归档pypi.org是我们回馈Pythons社区的一种方式。

一如既往,我们在公开场合执行SWH任务,因此每个人都可以看到我们正在做什么,并参与实现这一目标。

技术方面

显示源代码文件的三个阶段以及如何将其添加到Software Heritage Archive的图表:列出、计划和加载。

从拥有包存储库到在SWH上托管和访问源代码有三个步骤:列出、调度和加载。

软件遗产列表器在爬网和解析上游API列表以及生成源代码(SWH Archive中的软件项目引用集合)方面发挥着重要作用。我们使用的这个项目PyPI简单索引,作为列出API的包。

这个调度程序(SWH-scheduler)运行,并在数据库中记录我们重复的一次性任务,我们认为这是唯一的真实来源。SWH-scheduler将此数据库中的任务拉入芹菜这是一个Python工具,我们将其用作任务队列中间件和工作机管理框架。我们的调度器扩展Celery的方法之一是允许在相同类型的任务之间进行优先级排序;芹菜本身以严格的FIFO方式工作.

源分发文件(Python包也被称为sdists)可以作为tarball和zip使用取决于上游开发人员用于上传的平台.即将到来的政治公众人物517将标准化Python源代码发行版的构建方式,这将简化我们的归档工作。

SWH使用共同模式实现原点加载过程:
  • 获取可用版本的元数据;
  • 比较他们和最新负荷预计起飞时间版本在档案中;
  • 下载和处理这个新版本;
  • 加载这个新数据。

已考虑到PyPI的特殊性:

  • 已知版本比较使用完成这个消化由API提供(允许我们检测版本是否被覆盖,并存档新版本);
  • PKG-INFO元数据解析与保存;
  • 对具有多个dsit的版本进行单独导入。

现在已经成功添加了PyPI,有更多的包管理器要集成到Archive中。软件分布在不同的分发平台上。需要有一个地方来查找、跟踪和搜索所有源代码,这就是为什么我们有兴趣为Software Heritage添加更多支持。如果你有兴趣帮助我们,你可以开始使用文档. The加载程序的PyPI实现特别简洁。你可以阅读有关如何帮助的更多信息通过文档中的这些努力。

Python Package Index徽标©2018Python软件基金会

2018年10月10日