软件遗产pypi加载器
swh.loader.pypi的Python项目详细描述
swh加载程序pypi
swh pypi加载器的源代码存储库
装载机是做什么的?
pypi加载程序访问并加载pypi项目[1]。
每次访问将导致:
- 1个快照(以n个修订为目标;每个发布项目1个)
- 1个修订版(目标是1个目录;发布工件未压缩)
[1]https://pypi.org/help/#packages
首次访问
给定第一次访问的pypi项目(origin)加载程序:
- 检索给定项目(包括发行版)的信息
- 然后对于每个相关的版本
- 对于每个关联的源发行版(类型“sdist”)发行版 工件(每个版本可能有多个)
- 检索关联的工件存档(带检查)
- 在本地解压缩存档文件
- 计算未压缩目录的哈希值
- 然后创建一个版本(使用pkg-info元数据文件)目标 这样的目录
- 最后,创建一个快照,目标是所有看到的修订 (未压缩的pypi工件和元数据)。
下次访问
加载程序首先检查自上次以来是否有更改 拜访。如果没有变化,则留下就诊的快照 不变。新的访问目标是相同的快照。
如果发生了变化,则跳过已经看到的发布构件。 只加载新的。最后,加载程序创建一个新的 基于上一个快照。因此,新的快照目标 旧的和新的pypi发布构件。
术语
1项目:PYPI项目(用作SWH原点)。这是一个收藏 释放。
1版本:pypi项目的特定版本。是一个 信息收集和相关来源发布 工件(“sdist”类型)
1发布工件:源发布工件(由pypi分发 维修人员)。在swh,我们是 对“sdist”类型(源代码)感兴趣。
边缘情况
如果没有发布提供发布构件,则跳过这些构件
如果一个发布工件没有pkg-info文件(根在存档中)。 释放工件被跳过。
如果在获取操作期间出现问题(例如,释放工件 下载),加载失败,访问标记为“部分”。
开发
配置文件
位置
或者:
- /etc/softwarehitage/
- ~/.config/swh/
- ~/.swh/
注意:将调用该位置$swh_config_path
配置示例
$swh_配置路径/loader/pypi.yml:
storage:
cls: remote
args:
url: http://localhost:5002/
本地运行
内置命令行将为 主PYPI档案。
例如,要加载箭头:
python3 -m swh.loader.pypi.loader arrow
如果需要更多的控制,可以直接使用加载程序。它期望 三个参数:
- 项目:PYPI项目名称(如箭头所示)
- project_url:pypi项目的url(人类可读的html页面)
- project_metadata_url:pypi元数据信息的url (机器可解析json文档)
importlogginglogging.basicConfig(level=logging.DEBUG)fromswh.loader.pypi.tasksimportLoadPyPIproject='arrow'LoadPyPI().run(project,'https://pypi.org/pypi/%s/'%project,'https://pypi.org/pypi/%s/json'%project)