跳转到主要内容

简单仓库(PEP-503)的核心接口,包括适用于仓库客户端和服务器使用的强大组件实现

项目描述

simple-repository

简单仓库核心库提供了一个基础的SimpleRepository类,为PEP-503简单仓库的每个端点提供接口,即get_project_listget_project_page。此外,它暴露了资源检索接口(get_resource),允许从工具如pip等动态控制整个仓库交互。

关于

simple-repository核心库提供了一个基础SimpleRepository类,为PEP-503简单仓库的每个端点提供接口,即get_project_listget_project_page。此外,它还公开了一个资源检索接口(get_resource),允许从工具如pip等动态控制整个仓库交互。

SimpleRepository的子类,通常称为仓库“组件”,可以根据其功能自由特殊化仓库行为。组件可以包含其他组件,这样就可以构建一个仓库的有向无环图。

example project page

生成的SimpleRepository允许仓库消费者(客户端或服务器)查询“虚拟仓库”定义,就像它是传统文件或基于HTTP的仓库一样。

该仓库中实现的组件包括

  • HTTPRepository:代表一个基于HTTP的、符合PEP-503协议的简单仓库
  • LocalRepository:代表一个包含许多项目目录的目录,每个目录都有自己的文件/发行版
  • PrioritySelectedProjectsRepository:表示一组按顺序排列的仓库的组合,合并后,当选择一个项目时,将使用包含该项目的第一个仓库。该组件旨在减轻依赖混淆攻击
  • MetadataInjectorRepository:随着PEP-658的出现,安装程序不再需要下载整个发行版来确定项目的元数据(例如其依赖项)。该仓库将通过检查发行版(例如一个wheel)来实时计算元数据。该组件允许下游消费者(客户端和服务器)假定元数据的存在,即使原始仓库本身可能没有提供任何。
  • AllowListedRepository:代表一个只允许从定义的允许项目列表中访问项目的仓库。

在这个库中有很多这样的组件。如果所需的组件尚未存在,实现一个新的组件只需实现少量方法。生成的实现是可重用的、简洁的,并且易于验证和测试。

已知用途

以下是已知的一些simple-repository核心库的用途

  • simple-repository-server:一个运行PEP-503简单Python包仓库的工具,包括dist元数据(PEP-658)和JSON API(PEP-691)等功能
  • simple-repository-browser:一个用于浏览和搜索任何简单包仓库(PEP-503)的Web界面,灵感来自PyPI / warehouse

如果您知道simple-repository的其他用途,请提交PR以将它们添加到列表中。

许可证和支持

此代码已在MIT许可证下发布。这是一个内部开发的初始原型,目前没有公开开发。

希望发布此原型能够引起有类似需求的其他方面的兴趣。在足够协作的兴趣下,该项目有可能公开开发,并支持许多领域的Python包仓库。

请在https://github.com/orgs/simple-repository/discussions上与我们联系,分享该项目如何对您有用。这有助于我们评估兴趣水平,并在决定是否将未来资源投入项目时提供宝贵的见解。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源发行版

simple_repository-0.8.1.tar.gz (102.2 KB 查看哈希

上传时间

构建发行版

simple_repository-0.8.1-py3-none-any.whl (74.6 kB 查看哈希值)

上传时间 Python 3

由以下支持