软件遗产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)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用安卓 studio和mysql进行第二次照片更新的java   java是我的pom。xml安装和生成失败   获取并处理java异常行   java 2d平台冲突错误   java使用SSH exec通道调用shell脚本,但忽略对其他shell脚本的调用   java如何将postgresSql查询重写为Springdata jpa查询   java无法使用IP地址和端口登录liferay 6.2   爪哇1。按钮不显示文本2。逻辑正确吗   java如何在片段中使用谷歌地图视图?   如何在java中连接字符?   Java右移输出负值   java@PropertySource()在@ImportResource()导入的XML中定义的bean中不起作用   Java、SWT使窗口(shell)部分透明   回溯回溯java中的DUCU